Type Inference for Generic Instance Creation
ジェネリックインスタンス生成時の型推論。私的に嬉しいダイアモンドです。コードの見た目がちょっとマシになるやつです。コードは読み物ですから、読みやすいほうが良いに決まっています。誰でも一度は書いた事がある(よね?)MapのMapとかの見た目も多少マシに。
// Java6 Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>(); // Java7 Map<String, Map<String, String>> map = new HashMap<>();
原型とは違います。違うんです。何が違うんだと聞かれると困るんですけど、違うものは違うんです。こんな風に。
List<String> list; list = new ArrayList() { { add(1); // コンパイルは通る } }; list = new ArrayList<>() { { add(1); // コンパイルエラー } };
ね!……いや、初期化以外だと list は List
実際、ダイアモンドによって記述性は大して変わらないと思います。IDEを使っている限り勝手に補完されますし、使わないJava開発なんて考えられないし。記述する際に嬉しい事は、途中で変えたくなった時にコンストラクタのほうも直す手間が減るくらいですかね。可読性は間違いなく上がりますから、そっち寄りの変更かなーと。
あ、下の方に書いてるコンストラクタのやつ、意味わかりませんでした!「