小编Ahs*_*san的帖子

在构造函数中传递java.lang.Integer参数时的NoSuchMethodException(Reflection)

我试图宣布ArrayList使用反射.以下是我的代码

public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException {
    String intClass="java.lang.Integer";   //This string will be replaced by a string taken from user which will be a class name.
    Class classOf=Class.forName("java.util.ArrayList");
    Class[] parameterslist ={Class.forName(intClass)};
    Constructor constructorOfClass=classOf.getConstructor(parameterslist);
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到了

Exception in thread "main" java.lang.NoSuchMethodException: java.util.ArrayList.<init>(java.lang.Integer)
Run Code Online (Sandbox Code Playgroud)

当我修改参数列表为

Class[] parameterslist={int.class}
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但我必须将参数类的名称作为用户的输入,所以我不能直接写int.class.

我已经搜查约之间的区别Class.forName()和Classname.class但像回答这样认为,他们是一样的.我只是想知道为什么我们不能使用Class.forName()object作为参数传递给ArrayList构造函数,以及它在我编写时如何工作int.class?如果Class.forName()不是正确的方法,那么我们如何才能将类名的对象作为用户的输入?

java reflection arraylist

4
推荐指数
1
解决办法
490
查看次数

标签 统计

arraylist ×1

java ×1

reflection ×1