请看以下示例:
为了使这个类不可变,我必须在构造函数中防御性地拷贝任何可变参数,并在公共方法返回的内部可变对象上创建副本。
这可行吗?如果不行,是否有任何解决方法?
public final class ImmutableWrapper<T extends Number> {
private final T value;
public ImmutableWrapper(T value) {
// a subclass of Number may be mutable
// so, how to defensively copying the value?
this.value = value;
}
public T getValue() {
// the same here: how to return a copy?
return value;
}
}
为了使这个类不可变,我必须在构造函数中防御性地拷贝任何可变参数,并在公共方法返回的内部可变对象上创建副本。
这可行吗?如果不行,是否有任何解决方法?