わざと型が分かりにくいコードを書いて、読みやすさを比較する
では、「わざと型が分かりにくいコードを書いて、varを使った場合と使わない場合を比較する」練習問題と模範解答を紹介します。
練習問題:読みやすさを比較しよう
問題1:リストの宣言
次のコードを var を使わずに書いてみましょう。その後、var を使って書き直してみてください。
import java.util.ArrayList;
class Practice1 {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Apple");
fruits.add("Banana");
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
Java模範解答(varを使った場合)
import java.util.ArrayList;
class Practice1 {
public static void main(String[] args) {
var fruits = new ArrayList<String>(); // 型が長いのでvarでスッキリ
fruits.add("Apple");
fruits.add("Banana");
for (var fruit : fruits) { // String型と推論される
System.out.println(fruit);
}
}
}
Java解説
ArrayList<String>のように型が長いときはvarが便利- 拡張for文の
fruitもString型と推論される
問題2:Mapのエントリを扱う
次のコードを var を使わずに書いてみましょう。その後、var を使って書き直してみてください。
import java.util.HashMap;
import java.util.Map;
class Practice2 {
public static void main(String[] args) {
HashMap<String, Integer> prices = new HashMap<String, Integer>();
prices.put("Apple", 100);
prices.put("Banana", 200);
for (Map.Entry<String, Integer> entry : prices.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
Java模範解答(varを使った場合)
import java.util.HashMap;
class Practice2 {
public static void main(String[] args) {
var prices = new HashMap<String, Integer>(); // 型が長いのでvarで省略
prices.put("Apple", 100);
prices.put("Banana", 200);
for (var entry : prices.entrySet()) { // Map.Entry<String, Integer> と推論される
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
Java解説
Map.Entry<String, Integer>のように長い型名を省略できる- ただし「entryが何の型か分かりにくい」場合もあるので、コメントを残すと親切
問題3:計算結果の型を確認
次のコードを実行して、varで宣言した変数の型を確認してみましょう。
class Practice3 {
public static void main(String[] args) {
var a = 10; // これは何型?
var b = 3.14; // これは何型?
var c = a * b; // これは何型?
System.out.println(((Object)a).getClass().getName());
System.out.println(((Object)b).getClass().getName());
System.out.println(((Object)c).getClass().getName());
}
}
Java👉 出力例
java.lang.Integer
java.lang.Double
java.lang.Double
解説
10→ int型3.14→ double型int * double→ double型に変換される
まとめ
varは「型が長いとき」に特に便利- ただし「型が分かりにくいとき」はコメントや明示的な型を使った方が親切
- 練習では「型推論がどう働くか」を意識して確認するのが大事
