创建一个不可变类
package com.siyu.model.others;
/**
* String是不可变类
* 怎样实现一个不可变类?
* 不可变类可以解决什么问题:解决线程安全的问题
*
* 1:类定义为final,保证类不被继承
* 2: 确保所有变量被private修饰,保证不能被外部访问到
* 3: 不提供改变成员变量的方法,如set
* 4: 对于类中的非不可变成员,在使用get方法返回成员变量时,返回成员的深拷贝,保证解除引用关系,基本变量除外
* 5: 通过构造方法初始化时候,对于引用类型,要通过对参数的深拷贝进行成员变量的赋值操作,不能简单的赋值
*/
public final class ImmutableClass {
// private 修饰
private int[] array;
public ImmutableClass(int[] array) {
// 构造采用深拷贝
this.array = array.clone();
}
public int[] getArray() {
// 返回成员变量的拷贝,解除引用关系,不提供set
return array.clone();
}
}
我对任何唾手而得,快速,出自本能,即兴,含混的事物没有信心。我相信缓慢,平和,细水长流的力量,踏实,冷静。我不相信缺乏自律精神和不自我建设,不努力,可以得到个人或集体的解放。