日期:2014-05-20  浏览次数:20710 次

问一个关于深度复制的问题,高手请进
构建了一个类,包含一个叫obj的Object类变量,使用Object类是为了使obj能够被任何类型变量赋值
我想重写clone()方法实现obj的深度复制,
但是由于Object自身的clone()方法是protected的,下划线的地方报错了。
请问有没有什么方法来实现obj的深度复制,前提obj必须是Object类型

class A implements Cloneable{
public Object obj;
public Object clone() throws CloneNotSupportedException {
Object tempt=super.clone();
((A)tempt).obj=obj.clone();
}
}

------解决方案--------------------
Object类对象是无法被clone的,至少当引用obj被声明为Object类的时候,你不能这么做...

因为Java中并不是所有的类都可以被克隆(而且JDK中还描述说不能保证某些类clone的结果x.clone()!=x绝对成立),所以Object类对象无法调用clone()...

虽然不太了解lz的需求,不过建议lz考虑范性,当obj的类型不是Object(Object是绝对不行的)的时候,clone()方法就可以使用了喵~~``
------解决方案--------------------
lz报的什么错 是ClassCastException
------解决方案--------------------
Object这个类不能被深度复制,java中不是所有的类都能深度复制的.