Java 10 - ローカル変数の型推論
JEP 286 - ローカル変数の型推論
ローカル変数の型推論は、Java 10 以降で利用できる言語への最も明白な変更の 1 つです。変数の型を指定せずに、var を使用して変数を定義できます。コンパイラは、提供された値を使用して変数の型を推測します。この型推論は、ローカル変数に制限されています。
ローカル変数を宣言する古い方法
String name = "Welcome to tutorialspoint.com";
ローカル変数を宣言する新しい方法
var name = "Welcome to tutorialspoint.com";
コンパイラは、提供された値を検査することにより、name 変数の型を String として推測するようになりました。
注目ポイント
- <リ>
メンバー変数、メソッド パラメーター、戻り値の場合、型の推論はありません。
<リ>ローカル変数は宣言時に初期化する必要があります。それ以外の場合、コンパイラは推論せず、エラーをスローします。
<リ>ローカル変数の推論は、ループ ステートメントの初期化ブロック内で利用できます。
<リ>実行時のオーバーヘッドはありません。コンパイラは提供された値に基づいて型を推測するため、パフォーマンスの低下はありません。
<リ>動的な型の変更はありません。ローカル変数の型が推測されると、それを変更することはできません。
<リ>複雑なボイラープレート コードは、ローカル変数の型推論を使用して減らすことができます。
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
例
次のプログラムは、JAVA 10 でのローカル変数型推論の使用を示しています。
import java.util.List; public class Tester { public static void main(String[] args) { var names = List.of("Julie", "Robert", "Chris", "Joseph"); for (var name : names) { System.out.println(name); } System.out.println(""); for (var i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } } }
出力
次の出力が表示されます。
Julie Robert Chris Joseph Julie Robert Chris Joseph
Java