如何从旧实例创建新实例?

时间:2014-11-10 22:27:27

标签: java c++ duplicates createinstance

我有一种情况需要从该类的另一个实例创建一个类的新实例。它必须是一个新实例,而不是对旧实例的引用,因为需要操作新实例而不影响旧实例。

我得出的结论是,我的类中必须有一个构造函数,并且在该类中使用的每个类中都有一个构造函数,它将自己的类型作为参数,并从该参数创建新类型:

public class MainClass {
    public Type0 type0;
    public Type1 type1;
    public Type2 type2;


    MainClass(MainClass mc) {
        type0 = new Type0(mc.type0);
        type1 = new Type1(mc.type1);
        type2 = new Type2(mc.type2);
    }
}



public class Type0() {
    public int i;
    public SomeOtherType t;

    Type0(Type0 t0) {
        i = t0.i;
        t = new SomeOtherType(t0.t);
    }
}

 . . . 

在C ++中,这一切都会变得如此简单,我可以简单地说newInstance = oldInstance。但在Java中,从旧实例创建新实例的最佳实践是什么?这是我必须做的吗?在Java中,最好的做法是在每个类中都有这些类型的构造函数吗?或者有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

使用克隆方法不是not advisable(如果有人建议的话)。

你说得对,一个很好的方法是提供一个复制构造函数,它接受一个实例来复制。这就是Joshua Bloch在他的畅销书“Effective Java”中的建议。