我想在BaseClass构造函数中复制SubClass对象。我需要以下代码正确执行。
class BaseClass{ BaseClass() {} BaseClass(BaseClass base) { //TODO: how to implement? } } class SubClass extends BaseClass { SubClass() {} } public class Test { public static void main(String[] args) { BaseClass sub = new SubClass(); BaseClass subCopy = new BaseClass(sub); if (subCopy instanceof SubClass) { // need to be true } } }
可能吗?如果可以,我该怎么办?其他如何获得类似的效果?
这是不可能的。类A的构造函数为您提供了A的实例,无法绕开它。为什么不显式实例化子类?
另一种可能性可能涉及静态工厂方法,例如:
public static BaseClass create(BaseClass input) { // return BaseClass or subclass }