发布日期:2018-03-26
在Java中如何复制一个对象?+ 查看更多
在Java中如何复制一个对象?
+ 查看更多
发布日期:2018-03-10 11:21
分类:JAVA
浏览次数:87
请参见下面的代码:
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 }}每个对象也都有一个克隆方法可以用来复制对象,但不要使用它。它太容易创建一个类并且做出不正确的克隆方法。如果你打算那样做,至少读一下Joshua Bloch在Effective Java中说的话。