JAVA中的不可变类
自定义不可变类需要注意:
1.使用private 和final修饰符修饰变量。
2.提供带参数的构造器用于根据参数来初始化类里的属性。
3.仅为该类的属性提供getter方法,不提供setter方法。
4.如果有必要,重写Object类中的equals方法和hashCode方法:在equals方法中根据关键属性来作为两个对象相等的标准,还要保证两个equals方法判断相等的对象的hashCode 也相等。例如:系统提供的String类:equals:根据对象里的字符序列来作为相等的标准,hashCode方法也是根据字符序列计算得到的
5.注意JAVA中的对象是引用传递,所以2与3中的初始化和get返回对象,最好new个新的对象,构造器中根据内容new个对象防止逻辑代码修改原对象造成修改了不可变类属性,get中new个对象同样防止逻辑代码修改get得到的对象(new后修改的就与类中的对象无关了,有点类似clone了一份副本让逻辑代码操作)