私はそれを自分で実装しました:
次のようにコードをコピーします。
パブリック クラス A は Cloneable {を実装します
パブリック文字列 str[];
A() {
str = 新しい文字列[2];
}
public Object clone() {
A o = null;
試す {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = 新しい文字列[2];
を返します。
}
}
void run() が例外をスローする {
A a1 = 新しい A()、a2 = 新しい A();
a1.str[0] = "a"; a1.str[1] = "b";
a2 = (A) a1.clone();
a2.str[0] = "c"; a2.str[1] = "d";
System.out.println(a1.str[0] + " " + a2.str[0]);
}
結果:
交流
1.
次のようにコードをコピーします。
パブリック クラス A は Cloneable {を実装します
パブリック文字列名。
public Object clone() {
A o = null;
試す {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
を返します。
}
}
2.
次のようにコードをコピーします。
パブリック クラス A は Cloneable {を実装します
パブリック文字列名[];
パブリック A(){
名前=新しい文字列[2];
}
public Object clone() {
A o = null;
試す {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
を返します。
}
}
3.
次のようにコードをコピーします。
パブリック クラス A は Cloneable {を実装します
パブリック文字列名[];
public Vector<B>claB;
パブリック A(){
名前=新しい文字列[2];
claB=新しいベクトル<B>();
}
public Object clone() {
A o = null;
試す {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.name=new String[2];//深層クローン
o.claB=new Vector<B>();//クローンを最後まで処理する
for(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//もちろんクラス B も対応するクローン メソッドを実装する必要があります
o.claB.add(temp);
}
を返します。
}
}