Назад к вопросам
Senior
6
В чём разница между AutoCloseable и Closeable?
Компании, где спрашивали
kode.ru
Ответ от нейросети
sobes.tech AI
Интерфейсы Closeable и AutoCloseable в Java используются для автоматического закрытия ресурсов, но имеют несколько отличий:
Closeableнаходится в пакетеjava.ioи предназначен для потоков ввода-вывода. Методclose()в этом интерфейсе объявлен с выбрасываниемIOException.AutoCloseableпоявился в Java 7 в пакетеjava.langи более общий. Методclose()может выбрасывать любое исключение (Exception).
Closeable наследуется от AutoCloseable, то есть все Closeable являются AutoCloseable, но не наоборот.
Это важно при использовании try-with-resources: если ресурс реализует Closeable, то исключения закрытия ограничены IOException, а если только AutoCloseable — могут быть любые.
Пример:
class MyResource implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("Закрытие ресурса");
}
}
try (MyResource r = new MyResource()) {
// работа с ресурсом
}