若手のコードをレビューしていて、手が止まった。
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 件のコメント:
コメントを投稿