java 对象 克隆

来源:百度知道 编辑:UC知道 时间:2024/06/09 11:15:31
请问要对一个对象进行克隆,比如有个class Man,实例化一个对象tom,现在想复制一个tom到bob中,不过对bob的操作不能影响tom,请问应该怎么操作?我知道应该实现Cloneable不过具体应该怎么做呢?谢谢!
大家好,谢谢你们的帮助,不过你们所给的结果也同样感觉很迷惑,我也去试着实现,感觉都不行,不知道能否再详细一点,谢谢!
我知道需要implements Cloneable 不过应该怎样implements呢?谢谢!怎样实现那个clone方法?

这是里面的一段(非完整的例子):
public class Snake implements Cloneable {

...........................

public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {}
return o;

}
copy书上一段给你看看,希望有帮助把。。
当制作实例变量的一个引用时,原始实例变量和副本实力变量在内存中引用的均是同一个存储空间,这就意味着但对其中一个实例变量操作时就会影响到这个对象的副本。例如下面的程序代码。在执行时将会看到所画的两条线重合在一起,都是改变后的LineFigure1。
LineFigure lineFigure1 = new LineFigure();
LineFigure lineFigure2 = lineFigure1;
lineFigure1.draw(g);
…code for changing lineFigure1
lineFigure2.draw(g);
如果想让LineFigure2成为一个新的对象,就要用到Clone( )方法。Clone的后对象和原对象的存储空间不同,改变其中一个并不会对另一个产生任何影响。例如下面代码所示:
…………….
LineFigure2 = lineFigure1.clone();
…………….
如果LineFigure2中没有对其他对象的引用,事情就到此结束了,但LineFigure类中的实例变量StartPoint和EndPoint都是一个对象,即使简单地实现了对LineFigure1地Clone,可LineFigure1和LineFigure2的StartPoint和EndPoint实例变量引用的是同一个变量,要想完全的实现将LineFigure2和LineFigure1分离开,就要实现Cloneab