Java 从包含类名(具有已知超类)的字符串实例化对象的正确方法

Java 从包含类名(具有已知超类)的字符串实例化对象的正确方法,java,Java,我试图使用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 Nu

我试图使用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.Class.forName;
导入java.lang.reflect.Constructor;
对象[]参数=新对象[]{0};
String classname=“java.lang.Integer”;
试一试{
类没有将
数字作为其参数的构造函数


阅读你得到的stacktrace会告诉你这一点(可能有点神秘,但信息就在那里)。如果您对此有疑问,至少应该发布堆栈跟踪。

您可以为我们这些也不知道的人粘贴错误/堆栈跟踪吗?除非您在Class.forName上有静态导入,否则您的代码将无法编译。(对于尝试执行代码的人)是的,很抱歉,我将在上面添加它好的,我明白了。考虑到输入将是一个基本的int,我应该给该方法什么?单击类名,我链接了JavaDoc。检查
Integer
是否存在构造函数。使用其中一个。没有意识到int.class是有效的语法。谢谢,非常有用
java.lang.NoSuchMethodException: 
java.lang.Integer.<init>(java.lang.Number)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)