Чем отличается 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 может иметь различные побочные эффекты.
Как в продуктовой команде
AI Sprints — обучение профессиям с ИИ
Kanban-доска, код-ревью и Git Flow. Учитесь работать в процессах, которые используют в продакшене — задачи, как в Jira
- Kanban: доска задач как в Jira — привыкаете к инструментам с первого дня
- Процессы: код-ревью, Git workflow, спринты — как на реальной работе
- Треки: Android, Backend, QA — полный цикл разработки
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе