Java Clone(类的复制)实例代码
自己实现了一遍:
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<b> clab;
public a(){
name=new string[2];
clab=new vector<b>();
}
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<b>();//将clone进行到底
for(int i=0;i<clab.size();i++){
b temp=(b)clab.get(i).clone();//当然class b也要实现相应clone方法
o.clab.add(temp);
}
return o;
}
}
下一篇: Python中max函数用法实例分析