Ответ
Нет. Интерфейс Closeable (и его родитель AutoCloseable) лишь определяет контракт — метод close(). Автоматическое закрытие обеспечивает конструкция try-with-resources.
Как это работает:
- Без автоматизации (устаревший, рискованный способ):
FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); // работа с ресурсом } finally { if (fis != null) { fis.close(); // Закрытие вручную, можно забыть } } - С автоматическим закрытием (рекомендуется с Java 7+):
try (FileInputStream fis = new FileInputStream("file.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fis))) { // работа с ресурсами } // close() вызывается автоматически для fis и br в обратном порядкеКлючевое отличие:
Closeable.close()выбрасываетIOException, аAutoCloseable.close()—Exception.try-with-resourcesработает с любым объектом, реализующимAutoCloseable.