【问题标题】:Create in a simple way a copy of an object以简单的方式创建对象的副本
【发布时间】:2015-07-08 12:53:05
【问题描述】:

考虑下面的代码:

Project project1 = new Project("string1","string2","string3","string4","string5", ...);
Project project2 = project1;

这里,project2 不是project1 的副本,因为它指向同一个对象。 这意味着如果我编辑project2,它也会编辑project1。

我希望project2 独立于project1。 我想我可以使用Project 参数创建一个构造函数,例如:

public Project(Project project) {
    this.string1 = project.getString1();
    this.string2 = project.getString2();
    ...
}

我的情况是,我的 Project 类中有 15 个属性,所以这样做需要我编写一个大的构造函数。

有没有更好的方法来做到这一点? :)

谢谢!

【问题讨论】:

    标签: java


    【解决方案1】:

    不,没有更好的方法可以做到这一点。你可以使用clone,但是……不要。 Don't use clone.

    【讨论】:

    • 真的吗? :/ smart classes 很安静,但是大类可能会很长...
    • @Mistalis 是的,没错。这就是为什么你不应该创建巨大的类的原因之一。
    • 我知道大类是个坏主意,但就我而言,我没有找到更好的方法:-D 我将通过复制创建一个构造函数...
    • @Mistalis stackoverflow.com/a/3333989/1080648 可能与避免手动复制属性有关,但请仔细阅读链接文章以确保它适合您的设置
    • @JonStory 为此使用反射将非常非常缓慢。我想说的是,任何时候你有一个这么大的类,以至于你正在考虑在复制它时使用反射来循环它的属性,这表明你需要进行一些重构。
    猜你喜欢
    • 2023-01-02
    • 1970-01-01
    • 2016-08-08
    • 2020-03-03
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多