Улучшенный try-with-resources
Использование существующих эффективно финальных переменных непосредственно в 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.
Лаконично
Меньше строк при той же безопасности ресурсов.
Старый подход
Повторное объявление переменной
Современный подход
Эффективно финальная переменная
Начиная с JDK
9
Сложность
Начинающий
Поддержка JDK
Улучшенный try-with-resources
Доступно
Доступно в JDK 9 (сент. 2017)
Как это работает
Java 9 позволяет использовать эффективно финальные переменные непосредственно в try-with-resources без повторного объявления. Это чище, когда ресурс был создан за пределами блока try.
Связанная документация
Доказательство