首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:传递“这个”的副本?

Java:传递“这个”的副本?
EN

Stack Overflow用户
提问于 2011-12-12 22:41:29
回答 8查看 469关注 0票数 2

可能重复: 如何在Java中复制对象?

我的类Claus中有一个函数,它调用一个函数来接受Claus类型。我目前正在将this作为参数传递,但是它正在编辑类的当前实例,我不希望它这样做。相反,我希望它克隆类的当前实例并对其进行编辑,同时保持副本分离。我怎么能这么做?

编辑

也许我该进一步澄清我的问题.

我有一个物体在另一个物体里面。例如Clausfloss。我一直在读shallow copy vs deep copy的文章,我认为Claus的复制是正确的。我就像.

代码语言:javascript
复制
public Claus(Claus g){
    cla = new Floss(g.getFloss());
            //irrelevant other variables...
    p = g.getP();
    c = g.getC();
}

但是,Claus中的函数,我在构造函数中声明的方式完全相同。那就是..。

代码语言:javascript
复制
 cla = new Floss(g.getFloss());

其中cla = Floss变量和g= Claus,这两个变量正在传递给构造函数。Floss对象似乎并没有像它应该的那样创建一个深拷贝。为什么会发生这种情况?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-12-12 22:44:40

实现Cloneable并使用this.clone(),就像任何其他变量一样。

票数 4
EN

Stack Overflow用户

发布于 2011-12-12 22:44:52

您应该看看Object#clone方法

http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#clone%28%29

票数 3
EN

Stack Overflow用户

发布于 2011-12-12 22:45:13

考虑为您的类实现复制构造函数。这是一个构造函数,它接受相同类型的另一个实例,并将其状态复制到新对象中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8481952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档