使对象成为超类的子类

时间:2019-02-07 10:32:25

标签: java oop

首先,对不起英语,对不起,这不是我的母语

如何通过超类从子类中创建类型的对象。 例如 如果我有一个超级班级:

public class superClassName(){
    method(){
    make object of subclass type used
    }

然后在子类中调用该方法。

我想创建一个基于被调用的子类的对象吗?

1 个答案:

答案 0 :(得分:0)

使用反射可能提供最快的解决方案(this.getClass()返回具体的子类):

void method(){
    //use default, no-arg constructor
    superClassName newObject = this.getClass().getConstructor().newInstance();
}

或者,您的父类可以声明一个抽象方法来强制子类提供供应商:

public abstract class superClassName(){
    abstract Supplier<superClassName> getInstanceSupplier();

    void method(){
        superClassName newObject = this.getInstanceSupplier().get();
    }
}

并将其实现为:

public class SubClassName extends superClassName {
    abstract Supplier<superClassName> getInstanceSupplier() {
        return () -> new SubClassName();
    }
}