[英]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.