Ответ
Интерфейс java.io.Closeable определяет, что ресурс (файл, сетевое соединение, поток) должен быть закрыт после использования для освобождения системных ресурсов. Он содержит единственный метод:
void close() throws IOException;
Ключевые моменты:
- Назначение: Гарантированное освобождение ресурсов (дескрипторы файлов, сокеты).
- Идиоматическое использование: Вместе с try-with-resources (появился в Java 7), который гарантирует вызов
close().
Пример с try-with-resources:
try (FileInputStream fis = new FileInputStream("data.bin");
BufferedReader br = new BufferedReader(new FileReader("text.txt"))) {
// Автоматическое управление ресурсами.
// close() будет вызван для fis и br в обратном порядке создания.
String line = br.readLine();
// ... работа с ресурсами
} // Здесь вызываются close()
// Исключение IOException из close() добавляется как suppressed к исключению в блоке try.
Отличие от AutoCloseable:
AutoCloseable(пакетjava.lang) — более общий интерфейс, появившийся в Java 7 для поддержки try-with-resources. Его методclose()бросаетException.Closeable(пакетjava.io) — специализированный подклассAutoCloseableдля I/O операций. Его методclose()бросает толькоIOException. Все классы, реализующиеCloseable, автоматически совместимы с try-with-resources.