Чем отличается Closeable от AutoCloseable?
Интерфейс AutoCloseable появился в седьмой версии Java. Он представляет собой объект, предназначенный для хранения какого-либо ресурса до тех пор, пока он открыт. Он имеет только один метод close(), в котором прописаны команды, выполняемые при закрытии ранее задействованного ресурса. Особенностью данного интерфейса является возможность употреблять его в конструкции, состоящей из блоков try – wth – resource.
Closeable считается предшественником AutoCloseable. Для обеспечения совместимости он все ещё присутствует в Java, но лучше применять AutoCloseable. Если требуется употреблять экземпляры, относящиеся к Closeable в блоках try – wth – resource, то AutoCloseable нужно добавить в качестве родителя.
Основной недостаток Closeable – это ограниченный набор исключений. Благодаря наследованию в AutoCloseable расширен тип исключений от IOExcepton до Excepton.
Кроме этого контракт функции close() в Closeable предполагает идемпотентность, то есть чтобы результат выполнения метода при каждом выполнении был тот же, что и при первом запуске функции. В то же время метод close() в AutoCloseable может иметь различные побочные эффекты.
От нуля до работы за 10 месяцев
Обучающая платформа AndroidSprint
Выберите трек Android, Backend или QA. Дорожная карта от основ до Junior с менторской поддержкой на каждом этапе
- Дорожная карта: чёткий план от азов до трудоустройства — знаете, что делать дальше
- Менторы: код-ревью на каждое задание и карьерные консультации
- Результат: портфолио из проектов и поддержка при поиске работы