gpt4 book ai didi

以抽象类作为参数的 Java 方法,返回子类的实例

转载 作者:行者123 更新时间:2023-12-01 12:28:41 25 4
gpt4 key购买 nike

我确信以前有人问过这个问题,但我搜索了一段时间后找不到它。

我需要一个可以执行以下操作的函数:

public static AbstractClass createClass(Class<AbstractClass> theChildClass, int someVariable){
AbstractClass theInstance = theChildClass.newInstance(someVariable);
return theInstance;
}

然后在 AbstractClass 上我想这样定义它:

public abstract class AbstractClass{

private int someVariable;

public AbstractClass(int someVariable){
this.someVariable = someVariable;
initOnChild();
}

protected abstract void initOnChild();

}

然后在子类上,我理想情况下不想定义“public ChildClass(int someVariable){}”方法,所以它们看起来像这样:

public class ChildClass extends AbstractClass{

@Override
protected void initOnChild(){
//do some stuff
}

}

我追求的理想结果是能够像这样调用该方法:

ChildClass theInstance = UtilityClass.createClass(ChildClass.class, 1);

这可能吗?非常感谢任何解决方案或建议。

最佳答案

没有。构造函数不是继承的(因此不是 JLS 语言中的成员)。例如,根据具体情况,您可能想要应用策略模式。

(ObNote:通常,从构造函数调用可重写方法被认为是一个坏主意,而反射几乎总是一个非常坏的主意。)

关于以抽象类作为参数的 Java 方法,返回子类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com