小编典典

如何在BaseClass复制构造函数中复制SubClass对象

java

我想在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
        }
    }
}

可能吗?如果可以,我该怎么办?其他如何获得类似的效果?


阅读 274

收藏
2020-11-30

共1个答案

小编典典

这是不可能的。类A的构造函数为您提供了A的实例,无法绕开它。为什么不显式实例化子类?

另一种可能性可能涉及静态工厂方法,例如:

public static BaseClass create(BaseClass input) {
       // return BaseClass or subclass
}
2020-11-30