final
和 finalize()
是 Java 中两个完全不同的概念:
final
关键字:final
是一个关键字,用于声明类、方法或变量。其含义取决于其应用的上下文:
-
- 当用于类时:
final class ClassName
,表示该类是不可被继承的,即它是一个最终类,不能有子类继承它。 - 当用于方法时:
final returnType methodName()
,表示该方法是不可被子类重写的,即它是一个最终方法,子类不能覆盖该方法的实现。 - 当用于变量时:
final dataType variableName
,表示该变量是一个常量,一旦赋值后就不能再改变其值。
- 当用于类时:
finalize()
方法:finalize()
是java.lang.Object
类中的一个方法,它用于在对象被垃圾回收之前执行清理操作。当一个对象变得不可达时,垃圾回收器会调用对象的finalize()
方法来释放资源或执行其他清理任务。然而,自从 Java 9 开始,finalize()
方法已经被标记为废弃(Deprecated),不再推荐使用,而是推荐使用其他显式资源管理的方式,如try-with-resources
或java.lang.ref.Cleaner
。
综上所述,final
是一个关键字,用于修饰类、方法或变量,用于表示不可修改、不可继承或不可覆盖。而 finalize()
是一个方法,用于对象的资源释放和清理,在现代 Java 编程中已经不再推荐使用。