Java 14-16 の新しい言語仕様が全体的に嬉しくて優しい

Java 16 も出たことだし

今年の9月にリリースされる LTS の 17 に備えて、きしださんの記事を読みながら新しい機能の言語仕様の部分だけ触って遊んどいた。

Java 12 と 13 では言語仕様に関してプレビューはあったけど正式のものはなかったみたいなので、14, 15, 16 をチェックした。

コード

は、ここに置いといた。

github.com

Java 14

JEP 358: Helpful NullPointerExceptions

メッセージが分かりやすくなるやつ。嬉しい。

gist.github.com

Java 15 からはオプションがデフォルトで ON になったみたい。

JEP 361: Switch Expressions

これも嬉しいな。これまで Switch はあんまり好きじゃなくて使ってこなかったけど、機会があったら使いたい気持ちになった。

gist.github.com

Java 15

JEP 378: Text Blocks

これも嬉しいやつ。インデントが一番浅いところに揃えられるの、優しい。

gist.github.com

Java 16

JEP 394: Pattern Matching for instanceof

これも毎回「なんでキャストしないといけないのー?」って思ってたから嬉しい。あと、not で throw とか return とかしたときに、その後ろで変数が使えるの、優しい。

gist.github.com

JEP 395: Records

これも嬉しいなー。値オブジェクトとかで使えるのかなぁ。

gist.github.com

[JDK-8180352] Add Stream.toList() method

これも地味に嬉しい。

gist.github.com

おもしろかったー!

新しい機能、全体的に嬉しい感じなので嬉しい。

どっちかというと、Java 16 だと Gradle 7.0 RC 1 を使わないといけないとことか、JUnit 5 のドキュメントを読んだりする方に時間がかかったけど、それも含めておもしろかったー!