你所不知道的final

什么是不变性

若是对象在被建立后,状态就不能被修改,那么他就是不可变的具备不变性的对象,必定是线程安全的,咱们不须要采起任何额外的安全措施,也能保证线程安全编程

final的做用

被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写);安全


3种用法:修饰方法,变量,类

修饰变量 :不能被改变图片修饰方法:ide

构造方法不容许修饰不可被重写,也就是不能被override,即使子类有一样名字的方法,那也不是override图片修饰类:final关键字修饰的类不能被继承图片ui

注意点

final 修饰对象的时候,只有对象的引用不可变,而对象自己的属性是能够变的final使用原则,良好的编程习惯spa

不变性和final的关系

基本数据类型,确实被final修饰的就是不可变的可是对于对象类型,须要该对象保证本身被建立后,状态永远不变才能够线程



不可变的第二种状况orm

把变量写在线程内部,----栈封闭对象

在方法里新建局部变量,其实是存储在每一个线程私有栈空间,而每一个栈空间不能被其余线程访问到,因此,不会出现线程安全问题,这就是著名的 “栈封闭” 技术blog

相关文章
相关标签/搜索