gpt4 book ai didi

java - Class.getConstructor 和继承

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

我想使用 Class.getConstructor,因为在运行时我不知道需要什么实例。

我有一个带有构造函数 A(Type1) 的类 A。 Type2 扩展了 Type1。现在,当我调用 A(Type2) 时,编译器会直觉我实际上是在调用构造函数 A(Type1),因为 A(Type2) 不存在。但是,当我调用 A.class.getConstructor(Type2.class) 时,出现运行时错误,指出构造函数 A(Type2) 不存在。我可以理解为什么会发生这种情况,但我仍然想提供子类型的参数,并让运行时直觉所需的构造函数...

我真的不知道在运行时需要什么类型的构造函数(上面对 getConstructor 的简化调用只是为了指示我的代码中发生了什么),并且我不知道,例如,我是否将实例化 A 的子类的对象,或者使用 Type1 的子类的参数(在示例中为 Type2)。如何在运行时发生与编译时类似的事情?

感谢您的帮助,

欧文。

最佳答案

执行此操作并让 Java 在运行时执行编译器在编译时执行的操作的简单方法是使用 java.beans.Expression:

Type2 ctorArg = ...;
Expression expr = new Expression(A.class, "new", new Object[]{ctorArg});
A a = (A)expr.evaluate();

E&OE

关于java - Class.getConstructor 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24736678/

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