路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

JDK7はどこまで行くのやら

2009-11-28 00:38:30 | プログラミング
本当なんでしょうか。

Joe Wrightさんのブログの「New language features in Java 7
by Joe Wright」
http://code.joejag.com/2009/new-language-features-in-java-7/

によると、Java 7には言語にいろいろ変更があるらしいのですが、よくわかりません。

List<String> list = new ArrayList<String>();
list.add("item");・
String item = list.get(0);

の代わりに、

List<String> list = ["item"];
String item = list[0];

とかけるようになるということなのですが、

ちらっと、
「These collections are immutable.」
ともあります。

["item"]で生成されるのはArrayListだとすると、どうやってimmutableであることを保証するんだろう?

ArrayListじゃなくて、immutableなコレクションを新たに作ったのなら、何でList<String>型の変数に代入できるんだろう?Listのaddメソッドを呼び出したらコンパイルエラーになるんだろうか?それとも動的に例外が投げられるんだろうか?

list[0]でlist.get(0)の意味になるんだったら、演算子をオーバーロードできるわけで、これってJavaがこれまで懸命に忌避してきたことでは?

・・・などと疑問符がいくつも浮かぶのでした。