不变性是一个重要的设计原则,设计一个immutable类可以保证一个类是安全的,不会被其他类有意或无意的修改,从而保证其内部数据的安全。而如何构建一个immutable类有一下几个关键:
1、对类使用final修饰,为了防止子类在继承一个immutable类时改变了其属性,是其变得mutable,我们要限制其他类继承immutable类。
2、对field使用final和private修饰,使用private可以保证数据只在这个类中有效,不会被其他类使用,而使用final可以保证数据不会被修改,当被设置后就不会改变。但当类中引入了一个mutable类型数据时,尽管我们设置其为final,仍然可以使用其中的方法改变这个数据,这样我们就需要在将这个量传给外部时不直接将这个量传出去,而是建立一个这个量的拷贝额,再将这个拷贝传出,这样即使外部修改了这个量,也不会改变我们原有的数据。