2013-05-09 53 views
0

任何人都可以给我一个实际用法,其中使用了克隆,我了解它是如何完成的以及它的类型,但我没有看到它的实际用法。我还在某处读过它用于保存对象的状态,但我仍然认为很少有整个对象的状态会非常重要。什么是克隆的实际用法

+0

克隆或复制带来什么影响? (后者几乎总是首选。) – 2013-05-09 15:31:39

+0

E.g.我们想在方法中改变对象的语句,但是在这个方法执行后我们要把对象返回到初始状态。 – bsiamionau 2013-05-09 15:32:07

+0

我不行。自1997年5月以来,我一直使用Java进行编程,而且我从未找到它的用途,或者“复制构造函数”。 – EJP 2013-05-10 01:23:39

回答

0

如果你有一个对象y在对象X中被封装(例如它是私有的),但是你提供了一个访问器方法(比如getY()),那么你可能会冒险将引用返回给你的私有对象,这并不好。您不希望客户端代码能够获取对其的引用。因此,您可以在getY()中复制或克隆对象。如前所述,虽然复制是可能首选对克隆 - 见有效的Java项目11

这里是示例代码:

public class X { 
    private Date y = new Date(); 

    // other code here 

    public Date getY() { 
     //this could be bad: 
     //return y; 
     //this is good: 
     return new Date(y); 
    } 
+0

哎呀忘了提及另一个参考:有效的Java项目24有防御性复制的信息。 – 2013-05-09 16:04:45

+0

一个非常合乎逻辑的答案,谢谢!我会更多地讨论防御性复制 – Fardu 2013-05-09 18:17:37

0

有时您将对象属性加载到表单,然后在对(文本框,复选框,...)进行更改后将每个属性绑定到(textbox,combobox,...),即使您取消了也可以“T得到的原始值,因此克隆是最好的选择

克隆的对象,然后绑定,如果要取消原来的对象始终是不变的,这只是一个案例