繁体   English   中英

使对象成为超类的子类

[英]Make object of a subclass from the super class

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

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

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

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

我想要一个基于子类创建的对象,如果有意义的话?

使用反射可能提供最快的解决方案( 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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM