final:Java中的不可变

final用于类上,表示当前类是最终类,不能被imp也不能被extends(防止子类修改方法的行为,String、Integer都是这样)

final用于成员变量上,分为两种情况

  一种是用于基础数据类型上(int、long、short、byte、char、double、float、boolean)这类值就无法修改了

final int MAX_VALUE = 100;
// MAX_VALUE = 200;  // 编译错误,不能修改final变量

  另一种情况是用于引用数据类型上,虽然引用的对象不可被修改,但是引用的对象内部的属性还是可以被修改的

final用于方法上:当前方法不能被子类重写,不能被动态代理(会导致头上的注解失效)

final用于方法形参:方法内部参数不可被修改,类似于成员变量,如果是引用数据类型,那么引用的对象内部的属性还是能改的

 

final变量必须在被声明或者被构造时初始化,即要么直接value=?,要么在构造时必须加入这个参数,lombok中的@RequiredArgsConstructor即对final修饰的关键字实现构造。

上述种种,final的不可变性能够为程序带来健壮性和稳定性,也会降低代码的灵活性

posted @ 2025-08-03 16:44  天启A  阅读(8)  评论(0)    收藏  举报