Java 如何创建Immutable类
Java中的不可变类意味着一旦对象被创建,我们就不能改变其内容。在Java中,所有的封装类(如Integer, Boolean, Byte, Short)和String类都是不可变的。我们也可以创建我们自己的不可变的类。在继续之前,先了解一下不可变性的特点,以便在实现时有一个好的理解。以下是一些要求。
- 该类必须被声明为final,以便不能创建子类。
- 类中的数据成员必须被声明为私有,这样就不允许直接访问。
- 类中的数据成员必须被声明为final,这样我们就不能在对象创建后改变它的值。
- 一个参数化的构造函数应该初始化所有的字段,进行深度拷贝,这样数据成员就不能用对象引用来修改。
- 对象的深度拷贝应该在getter方法中执行,以返回一个拷贝,而不是返回实际的对象引用)
注意: 不应该有设置器,或者更简单地说,不应该有改变实例变量值的选项。
例子
输出
在这个例子中,我们创建了一个名为学生的最终类。它有三个最终的数据成员,一个参数化的构造函数,以及getter方法。请注意,这里没有setter方法。另外,请注意,我们不需要对封装类型的数据成员进行深度复制或克隆,因为它们已经是不可变的了。