В чем разница между final, finally и finalize в Java?


В чем разница между final, finally и finalize в Java?
Рейтинг: 5.0/1
Просмотров: 30 | Добавил: (15.03.2023) (Изменено: 15.03.2023)
Всего ответов: 2
Обсуждение вопроса:
Всего ответов: 2
Аватар
0

15.03.2023 оставил(а) комментарий:
Основное различие между final, finally и finalize заключается в том, что final — это модификатор доступа, finally — блок в обработке исключений, а finalize — метод класса объекта.
Аватар
0

15.03.2023 оставил(а) комментарий:
Тем, что это даже синтаксически разные вещи.

finalize – метод-финализатор из Object.

final – модификатор, который применяется к переменным, полям, методам и классам. Переменная или поле становится неизменяемым и требует инициализации. Финальный метод нельзя переопределить в наследниках. Финальный класс не может иметь наследников вообще. Используется для создания хорошего (Effective Java Item 15) API по принципу наименьших привилегий.

Когда в методе используется локальная переменная внешней области видимости, она обязана быть effectively final. В этом случае ключевое слово final необязательно, но значение всё равно не должно меняться.
finally – часть языковой конструкции try-catch-finally.

Любое исключение, выброшенное из блока try переводит исполнение в самый соответствующий ему catch (при наличии). Этим продиктована необходимость располагать блоки catch в строгом порядке, от типа исключения-наследника, к родителю. В случае multicatch тот же порядок должен соблюдаться и внутри одного catch. Больше примеров про порядок.

После выполнится блок finally. Выполняется он в любом случае, было исключение или нет. Типичное использование – освобождение ресурсов, обязательные завершающие действия.

Для требующих финализации классов («ресурсов») добавляется интерфейс AutoCloseable, повторяющийся код блока final выносится в метод close и вызывается неявно в конце try-with-resources. Если в этой конструкции присутствует и явный final, он будет выполнен после.
avatar