繁体   English   中英

使用的构造函数 <Class> …反射

[英]Constructors that use <Class>… with reflection

我正在尝试通过以下方式将类的构造函数用于反射:

MyClass.getConstructor(String.class, Array.newInstance(Car.class).getClass())

当该类的构造函数如下所示时:

public MyClass(String var1, Car... var2)

但是,当我尝试运行该代码(并创建该类的新实例)时,将抛出IllegalArgumentException。

Array.newInstance(Car.class).getClass()不是获取Car[]类型的Class的方式。 正确的方法就是

Car[].class

Array.newInstance(Car.class)向Java请求一个0维数组,这是非法的。

如果此处未对Car进行硬编码,则需要使用长度为0的一维数组,而不是0维数组:

Array.newInstance(someClass, 0).getClass()

您也可以构造数组类型的名称,并使用Class.forName ,但这更具可读性,不需要很长的else-if链即可获取基本数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM