I/O Начинающий

Использование существующих эффективно финальных переменных непосредственно в 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
Сложность
Начинающий
Улучшенный try-with-resources
Доступно

Доступно в JDK 9 (сент. 2017)

Java 9 позволяет использовать эффективно финальные переменные непосредственно в try-with-resources без повторного объявления. Это чище, когда ресурс был создан за пределами блока try.