![](/img/trans.png)
[英]How to restrict developers to use reflection to access private methods and constructors in Java?
[英]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.