好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在Java中如何复制一个对象? 关闭 返回上一级  

在Java中如何复制一个对象?
+ 查看更多

发布日期:2018-03-10 11:21
分类:JAVA
浏览次数:81
请参见下面的代码:
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中说的话。
上一篇我怎样反编译Java类文件?
Java:何时使用静态方法下一篇
下一篇Java:何时使用静态方法

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号