自己实现了一遍:
public class a implements cloneable {
public string str[];
a() {
str = new string[2];
}
public object clone() {
a o = null;
try {
o = (a) super.clone();
} catch (clonenotsupportedexception e) {
e.printstacktrace();
}
o.str = new string[2];
return o;
}
}
void run() throws exception {
a a1 = new a(), a2 = new 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]);
}
结果:
a c
1.
public class a implements cloneable {
public string name;
public object clone() {
a o = null;
try {
o = (a) super.clone();
} catch (clonenotsupportedexception e) {
e.printstacktrace();
}
return o;
}
}
2.
public class a implements cloneable {
public string name[];
public a(){
name=new string[2];
}
public object clone() {
a o = null;
try {
o = (a) super.clone();
} catch (clonenotsupportedexception e) {
e.printstacktrace();
}
return o;
}
}
3.
public class a implements cloneable {
public string name[];
public vector clab;
public a(){
name=new string[2];
clab=new vector();
}
public object clone() {
a o = null;
try {
o = (a) super.clone();
} catch (clonenotsupportedexception e) {
e.printstacktrace();
}
o.name=new string[2];//深度clone
o.clab=new vector();//将clone进行到底
for(int i=0;i
b temp=(b)clab.get(i).clone();//当然class b也要实现相应clone方法
o.clab.add(temp);
}
return o;
}
}
希望与广大网友互动??
点此进行留言吧!