04-案例实现
案例实现
根据如下步骤实现一个不可变类。
1.将该类标记为 final
。不可变类禁止了其他类的继承。
2.所有属性都必须是 private
和 final
型的。属性的值只能设置一次。
3.不要提供修改属性的方法。属性必须在构造器中初始化。
4.如果属性的值是可变对象(比如 java.util.Date
),则其getter方法总是返回一个保护性副本。
5.不要把 this
从不可变类的构造器中泄露出去(比如,下面的代码在构造器结束之前泄露了 this
):
public final NotSoImmutable implements Listener {
private final int x;
public NotSoImmutable(int x, Observable o) {
this.x = x;
o.registerListener(this);
}
}