2
我有這樣一個問題:是否有可能一些如何從一個對象「提取」超類到新對象?我會展示我的意思。Java只克隆超類
public class test {
public static void main(String[] args) {
subclass sb = new subclass(false);
System.out.println(sb.a);
System.out.println(sb.b);
superclass sc = sb;
superclass sc2;
try {
sc2 = sc.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return;
}
System.out.println(((subclass)sc2).a);
}
private static class superclass implements Serializable, Cloneable {
public boolean b;
public superclass() {
b = false;
}
public superclass(boolean a) {
this.b = a;
}
public superclass clone() throws CloneNotSupportedException {
return (superclass)super.clone();
}
}
private static class subclass extends superclass implements Serializable{
public boolean a;
public subclass(boolean a) {
super(true);
this.a = a;
}
}
}
與此代碼我得到這樣的輸出:
false
true
false
這意味着對象是完全克隆,BU我想克隆只有超類。
是否任何已經實現的方法來做到這一點,或者我必須在超類中實現我自己的字段到字段複製方法?
爲什麼你想部分克隆一個對象?這會破壞clone()的合同。如果您只想複製對象的一部分,我強烈建議您考慮使用工廠方法或複製構造器。 – Laf