2026年2月8日日曜日

【Java進化史 第2回】Java7 - diamond演算子は何を変えたのか?

【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 件のコメント:

コメントを投稿

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの

【Java進化史 第4回】switch文と設計思想 ― 分岐の向こう側にあるもの そういえば、最近あまりswitch文を書いていない。 書けなくなったわけではない。 むしろ、書こうと思えばすぐ書ける。 だが設計を考え始めると、 どこかで立ち止まる自分がいる。 ...