AutoCloseable
Интерфейс ресурса, который можно закрыть в try-with-resources.
Доступно с: Java 7
Синтаксис
public interface AutoCloseable {
void close() throws Exception;
}Примеры
Ресурсы закрываются в обратном порядке:
record Resource(String name) implements AutoCloseable {
Resource {
IO.println("open " + name);
}
public void close() {
IO.println("close " + name);
}
}
void main() {
try (var a = new Resource("A"); var b = new Resource("B")) {
IO.println("working");
}
}Результат:
open A
open B
working
close B
close AПримечания
Реализуйте его в своих классах, которые держат файл, соединение или блокировку. В интерфейсе close() объявлен с throws Exception, но в своей реализации можно бросать более узкое исключение или вовсе ничего — тогда catch не понадобится. Наследник Closeable из java.io требует throws IOException.
См. также
- try-with-resources — Блок `try`, который сам закрывает открытые ресурсы — файлы, соединения, потоки.
- IOException — Проверяемое исключение для ошибок ввода-вывода: файлов, сети, потоков данных.
Вопросы и ответы по теме
В учебнике
- try-with-resources — Автоматическое закрытие ресурсов в Java — try-with-resources, интерфейс AutoCloseable, несколько ресурсов, порядок закрытия и подавленные исключения.