java如何使字段不可复制

时间:2018-01-30 17:21:51

标签: java cloneable

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

public class Foo implements Cloneable {
    private Integer notInClone;
}

2 个答案:

答案 0 :(得分:5)

由于必须实施clone(),如果您希望它是公开的(它不属于Cloneable界面,并且protected位于Object 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; } }您将有机会清除代码中不需要的字段:

google-cloud-vision

Demo.

答案 1 :(得分:4)

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

您可以覆盖Object#clone方法,并在投射后在返回的null上有选择地将不可克隆字段的值设置为Object

克隆对象仍然会显示该字段,因为它应该显式地转换为同一个类,但该值将为null