Local Variable Typeについて理解を深める問題に挑戦しましょう。
問題
以下のコードを実行するとどうなりますか?正しい選択肢をすべて選んでください。
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = List.of("apple", "banana", "cherry");
var item = list.get(0);
if (item instanceof java.io.Serializable) {
System.out.println("Serializable!");
} else {
System.out.println("Not Serializable.");
}
System.out.println(item.length());
}
}
選択肢
- A. コンパイルエラー
- B. “Serializable!” と “5” と出力される
- C. “Not Serializable.” と “5” と出力される
- D. 実行時エラーが発生する
答えと解説
回答を見る
答え
B. “Serializable!” と “5” と出力される
解説
解説のポイント:
- Local Variable Type推論
- インタフェースの実装
Java 10から導入された`var`は、ローカル変数の型を自動的に推論する機能を提供します。
このコードでは、`list.get(0)`は “apple” という`String`オブジェクトを返します。
そのため、`var item`は`String`型として認識されます。
`String`クラスは`java.io.Serializable`インタフェースを実装しているため、if文の条件は真となり、「Serializable!」と出力されます。
また、itemは`String`型なので`length()`メソッドが使用でき、文字数「5」が出力されます。
このように、`var`を使うことでソースコードが簡潔となり、読みやすくなりますが、変数を生成した後に変数型を推測する必要がある場合には注意が必要です。
Javaでのプログラミングにおいて、ローカル変数型推論はプログラムの可読性とメンテナンス性を向上させる重要な要素になるでしょう。