1 不可变类的5大特征
- 类不能被继承,方法不能被子类覆写,所以类或者方法定义为final
- 保证成员变量不被外部访问,所以private修饰
- 不提供set方法
- 对于类中可变成员,get方法返回的是对象的拷贝,解除引用关
- 通过构造方法初始化成员变量,如果成员变量是非可变类型,一般指的是引用类型,则不能直接赋值,要通过深拷贝后再赋值
2 创建一个不可变类
package Collection;
public final class NoChangeClass {
private int[] arr;
public NoChangeClass(int[] array){
this.arr = array.clone();
}
public int[] getArr(){
return arr.clone();
}
}
3 不可变类的测试
package Collection;
public class Test4 {
public static void main(String[] args) {
int[] arr = {4,5,6,7};
NoChangeClass instance = new NoChangeClass(arr);
arr[0] = 88;
int[] arr1 = instance.getArr();
for (int i:arr1
) {
System.out.println(i); // 4,5,6,7
}
}
}