gpt4 book ai didi

java - 从包含类名(具有已知父类(super class))的字符串实例化对象的正确方法

转载 作者:行者123 更新时间:2023-11-30 07:34:55 25 4
gpt4 key购买 nike

我正在尝试使用 forName(String) 方法创建类(特别是抽象类的子类)的新实例。

例如,如果我想要 Number 的子类:

import static java.lang.Class.forName;
import java.lang.reflect.Constructor;

Object[] arguments = new Object[] {0};
String classname = "java.lang.Integer";
try {
Class<? extends Number> c = forName(classname).asSubclass(Number.class);
Constructor<? extends Number> constructor = c.getConstructor(Number.class);
Number x = constructor.newInstance(arguments);
}
catch (Exception e) {
e.printStackTrace();
}

我做错了什么?

编辑:堆栈跟踪

java.lang.NoSuchMethodException: 
java.lang.Integer.<init>(java.lang.Number)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)

最佳答案

java.lang.Integer没有以 Number 作为参数的构造函数。

阅读您获得的堆栈跟踪信息会告诉您这一点(可能以一种稍微隐晦的方式,但信息就在那里)。当您有疑问时,至少应该发布堆栈跟踪。

关于java - 从包含类名(具有已知父类(super class))的字符串实例化对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4851055/

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