Java模板化包装类,允许您修改对象一次

dje*_*lin 1 java immutability

我可以自己写,但我猜这是非常标准的.是否有标准的java类来执行此操作?我知道这必须是一个运行时功能,因为我的代码的各个部分可以设置它而不知道彼此在做什么 - 我只是希望如果发生这种情况会大声失败.

public class MutableOnce<Type T> {
    private T _t;
    private boolean _isSet = false;
    public void set(T t) {
        if(_isSet) {
            //raise exception
        }
        _t = t;
    public T get() { return _t; }
}
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 6

您不想简单地使对象不可变的任何原因?这将使类更容易使用,尤其是在并发环境中(示例中的类不是线程安全的).

public class Immutable<T> {
    private final T _t;
    public void Immutable(T t) {
        _t = t;
    }
    public T get() { return _t; } //you may want to return a copy of _t if _t is mutable
}
Run Code Online (Sandbox Code Playgroud)