Je l'ai implémenté moi-même :
Copiez le code comme suit :
la classe publique A implémente Cloneable {
chaîne publique str[];
UN() {
str = nouvelle chaîne[2];
}
clone d'objet public() {
A o = nul ;
essayer {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = nouvelle chaîne[2] ;
revenir o;
}
}
void run() lève une exception {
A a1 = nouveau A(), a2 = nouveau 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]);
}
résultat:
ca
1.
Copiez le code comme suit :
la classe publique A implémente Cloneable {
nom de chaîne publique ;
clone d'objet public() {
A o = nul ;
essayer {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
retourner o;
}
}
2.
Copiez le code comme suit :
la classe publique A implémente Cloneable {
nom de chaîne public[];
public A(){
nom=nouvelle chaîne[2] ;
}
clone d'objet public() {
A o = nul ;
essayer {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
revenir o;
}
}
3.
Copiez le code comme suit :
la classe publique A implémente Cloneable {
nom de chaîne public[];
vecteur public<B>claB ;
public A(){
nom=nouvelle chaîne[2] ;
claB=nouveau vecteur<B>();
}
clone d'objet public() {
A o = nul ;
essayer {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.name=new String[2];//clonage de profondeur
o.claB=new Vector<B>();//Clonage du processus jusqu'à la fin
pour(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//Bien sûr, la classe B doit également implémenter la méthode de clonage correspondante
o.claB.add(temp);
}
retourner o;
}
}