对于序列化,将排除瞬态字段。克隆有没有类似的关键字?如何从克隆中排除字段?
public class Foo implements Cloneable {
private Integer notInClone;
}
由于如果您希望它是公共的,则必须实现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;
}
演示。
据我所知,没有特定的注释可以做到这一点。
您可以重写 Object#clone
方法,并在强制转换后有选择地将不可克隆字段的值设置为在返回的Object
上null
。
克隆的对象仍将具有该字段,因为它应显式转换为同一类,但该值将null
。