Java 如何使字段不可克隆



对于序列化,将排除瞬态字段。克隆有没有类似的关键字?如何从克隆中排除字段?

public class Foo implements Cloneable {
    private Integer notInClone;
}

由于如果您希望它是公共的,则必须实现clone()(它不是Cloneable接口的一部分,并且protectedObject中(,您将有机会清除代码中不需要的字段:

public Object clone() throws CloneNotSupportedException {
    Foo res = (Foo)super.clone();
    res.notInClone = null;        // Do the cleanup for fields that you wish to exclude
    return res;
}

演示。

据我所知,没有特定的注释可以做到这一点。

您可以重写 Object#clone 方法,并在强制转换后有选择地将不可克隆字段的值设置为在返回的Objectnull

克隆的对象仍将具有该字段,因为它应显式转换为同一类,但该值将null

相关内容

最新更新