Develop with pleasure!

福岡でCloudとかBlockchainとか。

型推論

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のようにコンパイラが型推論に対応するだけで、実際のバイトコードには今まで通り、型が挿入されるようになるのかな?逆コンパイルしたコードにはちゃんと型が付いてるとか。