Чем отличается final finally finalize?
Эти три служебных слова относятся к разным разделам языка Java.
Метод finalise – это сборщик мусора, который вызывается Java машиной автоматически. При этом он не может быть вызван если есть ссылки на объект. Также виртуальная машина не может его вызвать более одного раза. При этом не гарантируется даже что он вообще будет запущен. Выполнять его может любой несинхронизированный поток. Начиная с версии Java 9 он помечается отметкой deprecated. Вместо него рекомендуется использовать классами, находящимися в пакете java.lang.ref. Можно также использовать блоки try — with — resource или try — finally.
Модификатор final может быть применён к переменным, методам и классам, чтобы объявить их как неизменяемые. Финализированные переменные и поля должны быть инициализированы при определении. Методы, определённые как final, невозможно переопределять в классах наследниках. Отмеченные модификатором final классы не могут иметь наследников.
Блок finally является необязательной конечной части конструкции try — catch — finally. В нём исключения, возникшие в блоке try, передаются в catch, после чего выполняются команды из блока finally. Причём команды, прописанные в блоке finally, выполняются независимо от того было выброшено исключение в блоке try или нет.
Бесплатные Telegram-боты для обучения
Практика с проверкой кода и помощью ИИ-ментора
AndroidSprint AI Mentor
Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7
Попробовать ИИ-ментора →KotlinSprint Bot
22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью
Начать обучение Kotlin →