【Java進化史 第2回】Java7 - diamond演算子は何を変えたのか?
最初に見たとき、正直こう思った。
「なんじゃこりゃ?」
「そもそも演算子なのか?」
「三項演算子に似てるな…?」
だが、使ってみると――
地味に、楽。
■ Java6までの書き方
List<String> list = new ArrayList<String>();
型を2回書く。
宣言側と、インスタンス生成側。
Genericsが導入されたJava5以降、 この「2回書き」は当たり前だった。
特に型が長くなると、地味に辛い。
■ Java7で何が変わったのか
List<String> list = new ArrayList<>();
右側の型が消えた。
<> だけ。
これが diamond演算子 と呼ばれる。
見た目がダイヤモンドに見えるからだ。
■ 何が嬉しいのか?
- 記述が短くなる
- 可読性が上がる
- 型変更が楽になる
例えば、
List<Integer> list = new ArrayList<Integer>();
を
List<Long> list = new ArrayList<Long>();
に変えるとき、 2箇所修正が必要だった。
diamondなら1箇所で済む。
これは地味に効く。
■ 本当に「演算子」なのか?
実は、厳密には演算子ではない。
Genericsの型推論を コンパイラに任せるための構文だ。
つまり、
型推論の第一歩。
■ 2記事書いて感じたこと
正直に言うと、 私はこれまでJava7を体系的に学んだことがなかった。
今回あらためて調べ、 第1回のtry-with-resources、 そして今回のdiamond演算子を追ってみて思った。
Java7は派手ではない。
だが、
開発者の「面倒くささ」を確実に減らしている。
例外処理の煩雑さを減らし、 Genericsの重複記述を減らし、 小さなストレスを一つずつ削っている。
革命ではない。
だが、 確実に優しい進化だ。
この2本を書いてみて、 Java7は「地味だけど開発者想いのバージョン」だったのではないか、 と感じ始めている。
0 件のコメント:
コメントを投稿