本当なんでしょうか。
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がこれまで懸命に忌避してきたことでは?
・・・などと疑問符がいくつも浮かぶのでした。
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がこれまで懸命に忌避してきたことでは?
・・・などと疑問符がいくつも浮かぶのでした。