在构造函数中传递java.lang.Integer的参数时,发生NoSuchMethodException(反射)

阿三:

我试图声明一个正在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);
}

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

Exception in thread "main" java.lang.NoSuchMethodException: java.util.ArrayList.<init>(java.lang.Integer)

当我修改参数列表为

Class[] parameterslist={int.class}

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

我已经搜索了和之间的区别Class.forName()Classname.class但是像这样的答案得出的结论是它们是相同的。我只想知道为什么我们不能使用Class.forName()对象作为参数传递给ArrayList构造函数,并且在编写时它如何工作int.class如果Class.forName()不是正确的方法,那么我们如何制作一个类名的对象作为用户的输入呢?

大卫:

ArrayList您要使用构造函数将原始int而不是Integer作为参数

public ArrayList(int initialCapacity) 

您提供Integer该类作为参数

String intClass="java.lang.Integer";
...
Class[] parameterslist ={Class.forName(intClass)};

这些不是反射用途的兼容类型。

如果Class.forname不是正确的方法,那么我们如何使一个类名的对象作为用户的输入。

Class.forName()这不是问题。如果要通过传递特定类的实例作为构造函数的参数来通过反射来创建对象,则该类必须为构造函数提供这种类型。
对于ArrayList,您只有两个带有参数的重载构造函数:

public ArrayList(Collection<? extends E> c) 

public ArrayList(int initialCapacity) 

因此,您可以通过反射来检索具有Collection类型或int类型的构造函数,仅此而已

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

Java反射:原始int的构造函数原因:java.lang.NoSuchMethodException:int。<init>(int)

来自分类Java

java通过反射访问Integer构造函数

来自分类Java

尝试使用OncePerRequestFilter时发生java.lang.NoSuchMethodException

来自分类Java

将参数传递给Java中的静态构造函数?

来自分类Java

java.lang.Integer内部代码中的问题

来自分类Java

创建名称为'application'的bean时出错,找不到默认的构造函数;嵌套的异常是java.lang.NoSuchMethodException

来自分类Java

构造函数参数传递

来自分类Java

java.lang.Integer中不能被强制转换为java.lang.Long中

来自分类Dev

当我要返回结果列表时,如何修复Java中的“类java.lang.Long无法强制转换为类java.lang.Integer”错误

来自分类Dev

如果在DLL中调用函数时没有传递足够的参数,会发生什么?

来自分类Java

方法showString([类java.lang.Integer,类java.lang.Integer,类java.lang.Boolean中])不存在PySpark

来自分类Java

参数值[1]与预期的类型[java.lang.Integer(n / a)]不匹配

来自分类Java

方法参数类型[java.lang.Integer]缺少URI模板变量'studentId'-Spring MVC

来自分类Java

参数值[0]与预期的类型[java.lang.Integer]不匹配

来自分类Java

Java反射错误Java.lang.NoSuchMethodException,但是方法存在

来自分类Dev

如何通过反射在Java中调用构造函数?

来自分类Java

链接构造函数时的Java空参数

来自分类Java

在创建线程时,我们在构造函数中传递的参数包含(this)为什么使用它?

来自分类Java

找不到默认的构造函数;嵌套异常是Spring MVC的java.lang.NoSuchMethodException?

来自分类Java

将方法传递给Controller:java.lang.Long不能强制转换为java.lang.Integer

来自分类Dev

反射-使用参数调用构造函数

来自分类Java

无法将java.lang.Integer字段设置为java.lang.Integer

来自分类Dev

在Kotlin中传递和使用函数作为构造函数参数

来自分类Dev

如何在Java中通过反射传递枚举参数

来自分类Java

代码注释“ HD,Figure”在Java java.lang.Integer类中是什么意思?

来自分类Java

java.lang.ClassCastException:java.util.Arrays中的$ ArrayList中不能转换为java.lang.Integer中的DAO

来自分类Java

如何将参数传递给Java中的可注入构造函数?

来自分类Java

从SharedPreferences检索值时,无法将java.lang.String强制转换为java.lang.Integer

来自分类Java

获取Shared Preference值时,不能将ClassCastException java.lang.Integer强制转换为java.lang.Long

TOP 榜单

热门标签

归档