如何从旧实例创建新实例
How do I create a new instance from an old one?
我有一种情况,需要从该类的另一个实例创建该类的新实例。它必须是一个新实例,而不是对旧实例的引用,因为需要在不影响旧实例的情况下操作新实例。
我得出的结论是,我必须在我的类中,在每个类中为该类中使用的每个类型都有一个构造函数,它将自己的类型作为参数,并根据该参数创建新的类型:
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中,在每个类中都有这些类型的构造函数是最佳实践吗?或者有更好的方法吗?
不建议使用clone方法(以防有人建议)。
你是正确的,一个好的方法是提供一个复制构造函数来复制一个实例。这是Joshua Bloch在他的畅销书《高效Java》中推荐的。
相关文章:
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 根据参数创建派生类的新实例
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 基于现有实例创建类的新实例
- 将unordered_map的新实例插入到unordered_map中
- 如何自动生成结构的新实例
- 在C 中,是否有一种(新的)方法来测试类是否在模板中具有虚拟破坏者而无需实例化实例
- 如何使递归函数在进入下一级循环之前读取每个新实例
- 为什么方法应该返回新实例,而不是修改实例本身
- C 函数中的新实例
- 正确的编码:返回类的新实例时
- 如果我在一个类中有一个静态属性,并创建该类的许多新实例
- 在 C 中声明结构的新实例
- 如何检查是否存在单例实例,如果没有,则不创建新实例?
- malloc是否创建该类的新实例
- 返回矢量的新实例
- "错误:需要类型"创建新实例
- 如何防止其他人在堆上创建类的新实例
- 使用模板创建类的新实例,不知道如何处理错误
- 尝试使用模板创建类的新实例,意外错误