Cou氏の徒然日記

ほのぼの日記ブログです。

Java の学習 (ローカル変数の型推論(var))

Java

Java自体、仕事でも時々触れることはありますが、管理やドキュメント対応のほうが多くなってきて、コードを書く機会がかなり減ってきており、特にJavaについては、最近のコードは見ていても、「???」と思う書き方も結構出てきています。

自分がまともにJavaのコードを書いていたのは…正直、Java 1.5とかそういう時代。

今のように「Java SE〜」というような表記ではなく、J2SE (*)」のような表記でしたね。

(*) J2SEJava 2 Platform, Standard Edition

 

最近はまたJavaに触れる機会も増えてきた…ということもあり、

そのため、久々にJavaの勉強でもしようかなと思いました。

 

型推論 (var)  :  Java SE 10〜?

Javaといえば、当初は、型定義はしっかりとしていなければなりませんでした。

ただ、変数の初期化などで、設定値から変数の型は明らかに決まる…ということで、型推論というものができたようです。

var number = 50;    // number変数は int型 と定義される
var name = "Nagoya";  // name変数は String型 と定義される

これでいいというのであるので、簡単ですね。

「var」定義といえば、自分の場合は、「JavaScript」のイメージが強かったですが、JavaJavaScriptがまた少し似てしまった感じがしますね。

 

もちろんいくつか制約はあるようです。

[型推論 var定義の誓約]
  • 初期化時の初期値省略不可
  • 複数定義不可
  • ローカル変数のみにしか使用できない

 

● 初期化時の初期値省略不可

初期化時に型推論で変数の型を決めるため、初期化は必須。

型推論の意味を考えたら自明ですね。

もちろん、初期化後に同変数に異なる変数型の値を代入してもエラーになります。

 

● 複数定義不可

varで、複数定義をまとめての宣言はできません。

まあ、これは変数ごとに型が異なる可能性があるから…という理由からでしょうか。

別に1行で複数の変数を定義するまでは必要はないですし、異なる型の変数をまとめて定義する必要性もないので、影響はないですね。

 

● ローカル変数のみにしか使用できない

varでの変数定義は、ローカル変数定義時にしか使用できません。

クラス変数などでは使えないということですね。

クラス変数とかだと、外部クラスからアクセスもあるので、そちらは型推論という機構は使用できず、はっきりと定義が必要ということですね。

 

それでも、varという型推論は、Javaで使えることになったことでかなり便利な気はしますね。