关于如何以正确的方式和错误的方式使用java克隆的Rubyist的任何简单示例?

时间:2014-05-10 17:06:52

标签: java oop clone

我是一名红宝石,已经开始学习java了。遇到了一些不使用java中的clone()方法的对话框,或者如果我这样做,请确保知道我在做什么。 Java克隆方法似乎是stackoverflow上的一个热门话题,但大多数问题都与高级主题相关,这些主题与克隆无法正常工作或浅层或深层复制等有关。不知道该怎么做。如何以正确的方式和错误的方式使用克隆的一些简单示例呢?

看起来克隆是在对象的接口中,但绝对没有实现。如果没有实现,为什么我必须抛出cloneNotsupported异常?有人可以提供一个完整的列表,列出如何以正确的方式和错误的方式使用克隆吗?

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

我认为clone()可以用于您自己的,定义良好的final数据结构(或记录),它不是一个类(具有所有public字段而没有方法) 。此外,这些字段应该是原始数据类型或不可变类型(如String s),因此可以毫无问题地共享。

通过手动分配所有字段来克隆这样的结构只会意味着更多的代码,使维护更加困难(添加或删除字段后更多的更改)我真的不明白这带来了什么好处。

C / C ++有一个赋值语句,用于结构一次性复制所有字段,在某些情况下透明地执行此操作(“按值传递的结构”)。 Java可以使用clone来实现类似的目标。毕竟,简单地为变量分配double值是一种克隆:IEEE数据结构的所有字段(符号位,指数,分数)都被复制。以前从来没有遇到任何根本问题。这与使用两个公共整数字段Pointx克隆最终y类有何不同?

针对clone()的大多数参数对于使用中的实例的确切类未知或可能未知的不可见字段未正确初始化的情况有效。