Java7から本格的にサポートされる型推論。(C#では既にC#3.0からサポートされてるみたいだけど。)
InfoQにも記事が掲載されている。
Type Inference(型推論)は、Java 7にとって良いアイデアか?
まだ、書き方自体は決まってないようで2通りの案が挙がっている。
# 従来の書き方 String s = "String"; # 型推論その1 s := "String"; # 型推論その2 final s = "String";
まぁ、要は、Stringって分かってるんだから、わざわざ型宣言としてStringって書かなくても推論できますよと。もちろん、推論された型にあっていないような使われ方がその後のコードで出てきたらコンパイルエラー。どのみち間違ってたらコンパイルエラーになるので、冗長な書き方をしなくて良くなる分、コードがすっきりはしそう。
ちなみにC#の型推論は変数の前にvar宣言をするからこんな感じ。
var s = "string";
まぁ記事の中ではクロージャーは見送られるようになったが、型推論のサポートはJavaの言語仕様に合わないという意見もあるようで、今後どうなるか。
ちなみに、型推論がどういった仕組みで実現できるのかというのがITProの記事で掲載されてる。(Javaの例は無いけど)
数理科学的バグ撲滅方法論のすすめ - 第12回 「型推論」の実装法:ITpro
Java7の場合は、Java5で導入されたEoDのようにコンパイラが型推論に対応するだけで、実際のバイトコードには今まで通り、型が挿入されるようになるのかな?逆コンパイルしたコードにはちゃんと型が付いてるとか。