try-with-resourcesの改善
実質的にfinalな変数をtry-with-resourcesで直接使用する。
コード比較
✕ Java 8
Connection conn = getConnection();
// Must re-declare in try
try (Connection c = conn) {
use(c);
}
✓ Java 9+
Connection conn = getConnection();
// Use existing variable directly
try (conn) {
use(conn);
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
再宣言不要
既存の変数名をそのまま使えます。
混乱が減る
tryブロック内に別の変数名が不要です。
簡潔
行数が減り、同じリソース安全性が保たれます。
旧来のアプローチ
変数の再宣言
モダンなアプローチ
実質的にfinalな変数
JDKバージョン
9
難易度
初級
JDKサポート
try-with-resourcesの改善
利用可能
JDK 9(2017年9月)以降、広く利用可能
仕組み
Java 9では実質的にfinalな変数を再宣言なしにtry-with-resourcesで直接使用できるようになりました。tryブロックの外でリソースを作成した場合にすっきりします。
関連ドキュメント