JDK10以降では、ローカル変数(メソッド内変数)宣言時に特定のデータ型を記述するのではなく、var
を利用することができる。
例えば、次のような状況で、int num = 10;
ではなくvar num = 10;
などと書ける。
- ローカル変数の初期化時
- 定数の初期化時
- 通常for文内のインデックス
- 拡張for文内で宣言されたローカル変数
- try-with-resource文内のローカル変数
しかし、次のような状況で用いると、コンパイルエラーとなる。
- メソッドの引数
- コンストラクタの引数
- メソッド戻り値
- クラスのフィールド(メンバ変数)
- catchブロック
- 配列の初期化時
- nullでの初期化時(型を推論できない)
- 初期値を設定しないとき(型を推論できない)