final、finally、finalize的区别

final可以用来修饰类、方法、变量,并分别代表不同的含义,final的类具有不可继承扩展的特性,final的变量不可修改,只能被赋值一次,赋值后不可再改变,final的方法不能被重写(override)但是能被子类所继承使用。
 
finally是Java的保证机制,用来保证一段代码务必执行的机制,使用try-finally或者try-catch-finally来进行类似JDBC连接、保证unlock锁等动作。
 
finalize是基础类java.lang.Object的一个方法,目的是保证对象在被回收前回收特定资源,但在JDK9以后被标记为deprecated(荒废的)
 
Ps.:final并不表示immutable(不可变)的,例如声明了final的ArrayList数组,则可以使用ArrayList的对象行为进行相应的变动操作绕开final限制
 
immutable在很多场景可以使用到,但是Java没有原生支持Immutable类,要实现,则需要做到:
class声明为final类,成员变量声明为final和private,不能实现setter方法。
构造对象时,成员变量使用深度拷贝来初始化,而不是直接复制,用以防御输入对象不被其他人修改。
要实现getter方法,使用copy-on-write原则,创建私有copy

 

posted @ 2022-06-03 03:09  龚一半  阅读(167)  评论(0编辑  收藏  举报