不可变对象需要满足的条件
- 对象创建以后其状态就不能修改
- 对象所有域都是final类型
- 对象是正确创建的(在对象创建期间,this引用没有逸出)
final 关键字:类,方法,变量
- 修饰类:不能被继承
- 修饰方法:1.锁定方法不被继承类修改;2.效率
- 修饰变量: 基本数据类型变量,初始化之后就不能变了,,引用类型变量,初始化之后就不能再指向别的地方了
Collections.unmodifiableXXX:Collection,List,Set,Map
Guava:ImmutableXXX:Collection,List,Set,Map