关于可克隆接口和object.clone()在java中的混淆 - 代码日志

关于可克隆接口和object.clone()在java中的混淆

如果我有:

class foo implements Cloneable

然后做:

bar = new foo();
bar.clone();

我得到一个浅的副本,而不需要编写任何bar.clone()代码,像我通常需要做,当我实现一个接口。

我的理解是,接口的函数必须由实现它的类填充,并且Object.clone()没有实现(根据文档“类Object本身不实现接口Cloneable”)

那么我的浅克隆来自哪里?如果Object.clone()没有实现,实现bar.clone()的代码在哪里?我很困惑。

使用克隆非常小心。其实我会完全避免。我从来没有需要它但是,据说,我曾经读过的主题的最好的讨论是由Joshua Bloch在有效的Java中。阅读项目11:“明智地覆盖克隆”。

请自己一个忙,读这个项目。我实际上建议阅读整个章节(和本书的其余部分)。你需要知道的关于克隆的一切,为什么我会提醒你,这是在那里。

希望这可以帮助。

http://stackoverflow.com/questions/1067383/confusion-about-cloneable-interface-and-object-clone-in-java

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:关于可克隆接口和object.clone()在java中的混淆