進歩についていけない焦りを抱えた50代が、

若手のコードを理解できるようになることを目標に、Java7以降を一から学び直す記録です。

2026年2月28日土曜日

【Java進化史 第26回】Java9でListは何がどう変わったのか 〜 List.ofってなんじゃこりゃ? 〜

若手のコードをレビューしていて、手が止まった。


List<String> names = List.of("Tanaka", "Sato", "Suzuki");

……なんじゃこりゃ?

of

どこから来た?

new ArrayList<>() は?

一瞬、何をしているのか分からなかった。


■ Java7以前ならどう書いたか

まずは、昔の世界を思い出す。


List<String> names = new ArrayList<>();
names.add("Tanaka");
names.add("Sato");
names.add("Suzuki");

あるいは、


List<String> names = Arrays.asList("Tanaka", "Sato", "Suzuki");

これなら分かる。

リストを作っている。

見慣れた風景だ。


■ Java9で何が追加されたのか

Java9で追加されたのは、 コレクションのファクトリメソッド。

List.of()
Set.of()
Map.of()

簡単にコレクションを作れるようになった。

それだけ、と言えばそれだけ。


■ 何がどう違うのか

だが、ひとつ大きな違いがある。

List.of() で作ったリストは、 変更できない。


names.add("Yamada"); // 実行時例外

追加も削除もできない。

いわゆる immutable(変更不可)なリストだ。


■ 若手のコードをどう読むか

若手のコードに List.of() が出てきたら、 こう読む。

  • これは固定データだな
  • あとから変更しない前提だな
  • 安全側に倒しているな

昔の感覚だと、 「とりあえず ArrayList」だった。

だが今は違う。

変更しないなら、最初から変更できない形にする。

設計の発想が、少し変わっている。


■ 革命ではない。でも、読めないと止まる

Java8のような派手さはない。

だが、 知らないと読めない。

そして、 読めないと、レビューで止まる。

「なんじゃこりゃ?」で固まる。

それを一つずつ潰していく。

Java9は、そういうバージョンなのかもしれない。


0 件のコメント:

コメントを投稿

【Java進化史 第26回】Java9でListは何がどう変わったのか 〜 List.ofってなんじゃこりゃ? 〜

若手のコードをレビューしていて、手が止まった。 List<String> names = List.of("Tanaka", "Sato", "Suzuki"); ……なんじゃこりゃ? ...