Чем отличается 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 может иметь различные побочные эффекты.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *