Eu mesmo implementei:
Copie o código do código da seguinte forma:
classe pública A implementa Cloneable {
String públicastr[];
UMA() {
str = nova String[2];
}
clone de objeto público() {
Ao = nulo;
tentar {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = nova String[2];
retornar o;
}
}
void run() lança exceção {
A a1 = novo A(), a2 = novo 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]);
}
resultado:
ac
1.
Copie o código do código da seguinte forma:
classe pública A implementa Cloneable {
nome da string pública;
clone de objeto público() {
Ao = nulo;
tentar {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
retornar o;
}
}
2.
Copie o código do código da seguinte forma:
classe pública A implementa Cloneable {
nome da string pública[];
públicoA(){
nome=nova String[2];
}
clone de objeto público() {
Ao = nulo;
tentar {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
retornar o;
}
}
3.
Copie o código do código da seguinte forma:
classe pública A implementa Cloneable {
nome da string pública[];
vetor público<B>claB;
públicoA(){
nome=nova String[2];
claB=novo Vetor<B>();
}
clone de objeto público() {
Ao = nulo;
tentar {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.name=new String[2];//clone de profundidade
o.claB=new Vector<B>();//Processa clone até o fim
for(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//Claro que a Classe B também deve implementar o método clone correspondente
o.claB.add(temp);
}
retornar o;
}
}