不可变对象 immutable Objects
1、 可以引用传递,可以缓存(在操作同一个对象,状态不会改变就不会被修改而导致另一个引用出错)
2、 线程安全(多线程问题只在多个人同时修改的时候才会出问题,反正不能被修改,所以线程安全,大家都只能读)
使用final关键字来实现对象的不可变性
1、 类申明:类不可以被继承
2、 函数申明:函数不可以在派生类中重写
3、 变量申明:变量不可以指向其他对象(只是不可以指向其他对象,比如说Object类变量一开始指向的一个变量,不可以使它指向另一个变量,但是可以改变它指向对象里的值)
4、 static final变量:用于定义常量,名称一般大写。
实现不可变性
1、 final关键字无法保证不可变性
2、 从接口定义,类的实现上保证不可变性
3、 Collections.unmodifiableXXX(XXX为不可变类型)