日期:2014-05-20 浏览次数:20833 次
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 接口