ドラマのタイトルは「まいんあがれ!」
ちょっと前だけど、
11月21日にあった、JJUG CCCの
「最新 LTS Java 17 でプログラムが書きやすくなるという話」
で、JAVAの前のLTS(JAVA11)から、今度のLTS(JAVA17)までの差分話を聞いてきたので、以下(下線から)、メモメモ
・Java11以降で入ったものの話をします
レコードクラス等
・自己紹介・会社紹介
・LTSってなあに
2021年9月14日にLTSのJava17
(前のLTSはJava11)
LTS:長期サポートが行われる
3年に1度のペース(2年に1度を検討)
・自己紹介・会社紹介
・LTSってなあに
2021年9月14日にLTSのJava17
(前のLTSはJava11)
LTS:長期サポートが行われる
3年に1度のペース(2年に1度を検討)
サンプルソースコード、資料
https://bit.ly//3GYJ4n5
●レコードクラス Java16~
JEP 395
レコードクラスの宣言
public record User(long ld,String name){
}
レコードヘッダ(long ld,String name)
レコードコンポーネントリストlong ld,String name
レコードコンポーネントlong ld
finalなフィールド
大量のボイラーテンプレートを排除
明示的に継承はできない。implimentsはできる
デフォルトコンストラクタは宣言されないが、初期化が暗黙的に
→明示的にコンストラクタをつくることはできる
コンパクトコンストラクタ
メソッド;equalsmhashCode,toStringが暗黙的に→オーバーライドできる
finalなので、フィールドは書き換えられない
エンティティに使うべきではない
→エンティティは変更可能なことが前提
DTOにするのは、問題ない
JSON変換にはJackson使う
Thymeleaf:SPEl式:レコードでもそのままでOK
●新しいswitchステートメント
→を書くと(switch rule)break文不要
yieldで値を返せる({}とyield省略可能):returnでないこと注意
●Instanceofによるパターンマッチング
●switchによるパターンマッチング Java17プレビュー
●テキストブロック
文字列の連結を使わずに書ける
"""で始まり、終わり
●シールクラス
JEP 409
利用できる場面、それほど多くない
APIで提供するとき、間違って作成しないために
enumでも似たことはできるが、柔軟にできる
https://bit.ly//3GYJ4n5
●レコードクラス Java16~
JEP 395
レコードクラスの宣言
public record User(long ld,String name){
}
レコードヘッダ(long ld,String name)
レコードコンポーネントリストlong ld,String name
レコードコンポーネントlong ld
finalなフィールド
大量のボイラーテンプレートを排除
明示的に継承はできない。implimentsはできる
デフォルトコンストラクタは宣言されないが、初期化が暗黙的に
→明示的にコンストラクタをつくることはできる
コンパクトコンストラクタ
メソッド;equalsmhashCode,toStringが暗黙的に→オーバーライドできる
finalなので、フィールドは書き換えられない
エンティティに使うべきではない
→エンティティは変更可能なことが前提
DTOにするのは、問題ない
JSON変換にはJackson使う
Thymeleaf:SPEl式:レコードでもそのままでOK
●新しいswitchステートメント
→を書くと(switch rule)break文不要
yieldで値を返せる({}とyield省略可能):returnでないこと注意
●Instanceofによるパターンマッチング
●switchによるパターンマッチング Java17プレビュー
●テキストブロック
文字列の連結を使わずに書ける
"""で始まり、終わり
●シールクラス
JEP 409
利用できる場面、それほど多くない
APIで提供するとき、間違って作成しないために
enumでも似たことはできるが、柔軟にできる