日期:2014-05-20 浏览次数:21042 次
public class Test {
public static void main(String args[]) {
Ja ja1 = new Ja();
ja1.setI(9);
Ja ja2 = ja1.clone(); // 调用clone方法实现复制
}
}
class Ja {
public int i;
public void setI(int i) {
this.i = i;
}
public int getI() {
return i;
}
@Override
public Ja clone() { // 自定义的clone方法
Ja a = new Ja();
a.setI(this.getI());
return a;
}
}
------解决方案--------------------
浅克隆:因为楼主类中没有对象引用,所能用Object的clone()方法 ,你的类应该实现Cloneable接口。
class Ja implements Cloneable {
public int i;
public void setI(int i) {
this.i = i;
}
public int getI() {
return i;
}
@Override
public Object clone() throws CloneNotSupportedException { // 自定义的clone方法
return super.clone();
}
}
public class Test {
public static void main(String args[]) {
Ja ja1 = new Ja();
ja1.setI(10);
Ja ja2 = null;
try {
ja2 = (Ja)ja1.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 调用clone方法实现复制
System.out.println(ja2.getI());
}
}
------解决方案--------------------
调用超类
也就是Cloneable 接口