今日はJava Silver試験にもよく出題される、新しいJavaの機能であるローカル変数型推論とインタフェースの理解を深める問題です。
問題
以下のコードを実行した場合の出力を選んでください。
interface Operable {
String operate();
}
class Machine implements Operable {
public String operate() {
return "Machine Operating";
}
}
public class Main {
public static void main(String[] args) {
var myMachine = new Machine();
System.out.println(myMachine.operate());
}
}
選択肢
- A. Machine Operating
- B. コンパイルエラー
- C. 実行時エラー
- D. Interference Not Working
答えと解説
回答を見る
答え
A. Machine Operating
解説
解説のポイント:
- ローカル変数型推論(var)の基本
- インタフェースの実装と使用
Javaの新しい機能であるローカル変数型推論
(var)は、Java 10以降で利用可能になりました。var
を使うことで、プログラマはローカル変数を定義する際の型宣言を簡略化することができます。
ここではvar myMachine = new Machine();
として変数を宣言しています。この際、コンパイラは右辺のnew Machine()
から自動的に変数の型をMachine
と推論します。
インタフェースOperable
をMachine
クラスが実装しています。Machine
クラスのoperate()
メソッドはOperable
インタフェースのメソッドをオーバーライドしており、これによりMachine Operating
というメッセージを返します。
ローカル変数型推論は、特にコーディングを短く整然とするのに有効ですが、使いすぎるとコードの可読性に影響が出る可能性があります。
誤答理由とつまずきポイント: コードを見るとvar
が使われているため、推論について理解がないとコンパイルエラーや実行時エラーを想像するかもしれませんが、この場合var
は正しくMachine
型を推論するため、コンパイルエラーなどにはなりません。