Ответ
Интерфейс AutoCloseable (появился в Java 7) предназначен для автоматического управления ресурсами в конструкции try-with-resources. Он объявляет единственный метод void close() throws Exception.
Основное назначение: Гарантировать вызов метода close() для освобождения ресурсов (файлов, сетевых соединений, сокетов) даже при возникновении исключения.
Пример использования:
// Класс, реализующий AutoCloseable
class DatabaseConnection implements AutoCloseable {
public void connect() { /* ... */ }
@Override
public void close() { // Будет вызван автоматически
System.out.println("Connection closed");
}
}
// try-with-resources автоматически закроет ресурс
public void processData() {
try (DatabaseConnection conn = new DatabaseConnection()) {
conn.connect();
// Работа с данными
} // Здесь неявно вызывается conn.close()
// Исключения из блока try и из close() могут быть подавлены/объединены
}
Отличие от Closeable:
Closeable(появился раньше) расширяетAutoCloseable.- Его метод
close()объявлен какthrows IOException, в то время какAutoCloseable.close()может бросать любоеException. AutoCloseable— более общий интерфейс для любых ресурсов, а не только для I/O.