Lo implementé yo mismo:
Copie el código de código de la siguiente manera:
la clase pública A implementa Clonable {
cadena de cadena pública [];
A() {
cadena = nueva cadena [2];
}
clonación de objeto público () {
A o = nulo;
intentar {
o = (A) super.clon();
} captura (CloneNotSupportedException e) {
e.printStackTrace();
}
o.str = nueva cadena[2];
volver o;
}
}
void run() lanza una excepción {
A a1 = nueva A(), a2 = nueva A();
a1.cadena[0] = "a"; a1.cadena[1] = "b";
a2 = (A) a1.clon();
a2.cadena[0] = "c"; a2.cadena[1] = "d";
System.out.println(a1.str[0] + " " + a2.str[0]);
}
resultado:
C.A
1.
Copie el código de código de la siguiente manera:
la clase pública A implementa Clonable {
nombre de cadena pública;
clonación de objeto público () {
A o = nulo;
intentar {
o = (A) super.clon();
} captura (CloneNotSupportedException e) {
e.printStackTrace();
}
volver o;
}
}
2.
Copie el código de código de la siguiente manera:
la clase pública A implementa Clonable {
nombre de cadena pública [];
público A(){
nombre=nueva cadena[2];
}
clonación de objeto público () {
A o = nulo;
intentar {
o = (A) super.clon();
} captura (CloneNotSupportedException e) {
e.printStackTrace();
}
volver o;
}
}
3.
Copie el código de código de la siguiente manera:
la clase pública A implementa Clonable {
nombre de cadena pública [];
vector público<B>claB;
público A(){
nombre=nueva cadena[2];
claB=nuevo vector<B>();
}
clonación de objeto público () {
A o = nulo;
intentar {
o = (A) super.clon();
} captura (CloneNotSupportedException e) {
e.printStackTrace();
}
o.name=new String[2];//clon en profundidad
o.claB=new Vector<B>();//Procesar clonación hasta el final
for(int i=0;i<claB.size();i++){
B temp=(B)claB.get(i).clone();//Por supuesto, la Clase B también debe implementar el método de clonación correspondiente
o.claB.add(temp);
}
volver o;
}
}