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