如何在Java中复制对象?

问题:

考虑下面的代码:

DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'

DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'

dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'

所以,我想把’dum’复制到’dumtwo’,我想改变’dum’而不影响’dumtwo’。但上面的代码没有这样做。当我改变“dum”时,“dumtwo”也发生了同样的变化。
我猜,当我说dumtwo = dum时,Java复制仅供参考。那么,有没有办法创建一个新的“dum”副本并将其分配给“dumtwo”?

回答:

创建一个拷贝构造函数:

class DummyBean {
  private String dummy;

  public DummyBean(DummyBean another) {
    this.dummy = another.dummy; // you can access  
  }
}

每个对象也有一个克隆方法,可用于复制对象,但不要使用它。创建类和做不正确的克隆方法太容易了。如果你要这样做,至少阅读约书亚布洛赫在Effective Java中说的话

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do I copy an object in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 76 = 79