tgoop.com/javaproglib/7023
Create:
Last Update:
Last Update:
🧩 final vs finally vs finalize()
Казалось бы, три похожих ключевых слова → final, finally, finalize(). А смысл принципиально разный. Давайте разберёмся.
🔹 final
Модификатор, который делает сущность неизменяемой:
▪️ final переменная → нельзя переприсвоить.
▪️ final метод → нельзя переопределить.
▪️ final класс → нельзя наследовать.
Используется для обеспечения immutability и контрактов в коде.
🔹 finally
Блок в try-catch, который выполняется всегда (даже если выброшено исключение).
Гарантирует освобождение ресурсов:
try {
FileReader reader = new FileReader("data.txt");
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("Закрываем ресурсы");
}
🔹 finalize()
Метод класса Object, вызываемый GC перед удалением объекта. Используется редко, считается устаревшим (deprecated с Java 9, удалён в Java 18).
Минус: непредсказуемое время вызова.
Современная альтернатива: try-with-resources или явная очистка.
final → контроль изменяемости.
finally → контроль завершения.
finalize() → контроль очистки (но не используйте).
#CoreJava