我有一个包含所有必填字段的Base Class对象。在一个字段的基础上,我需要返回相应的派生对象,其中包含来自基础对象的所有信息。
我有一个基类,字段为1,字段2.现在我想要一种方法来传回一个包含所有基类信息的派生对象。
我不认为我可以把它投射到Derived Object。我可以通过将Base类对象传递给构造函数然后将单个元素复制到新对象来实现。
有快捷方式吗?
答案 0 :(得分:3)
没有。您将需要复制所有字段(您可以使用Reflection自动执行此操作,但我建议您自己编写代码)。或者,您可以取消继承并使用组合,这可能是也可能不是您的案例中可接受的解决方案。
你可以做的是实现一个复制构造函数:
class Base {
public Base() { } // Existing constructors
public Base(Base other) {
this.a = other.a;
this.b = other.b;
// ...
}
}
并从派生类构造函数中调用它:
class Derived : Base {
public Derived(Base template) {
super(template);
// Initialize specific fields
}
}