使用反射调用具有用户定义的类数组参数的方法

时间:2018-06-14 08:39:41

标签: java reflection

我尝试编写一个方法,通过使用反射将用户定义类的数组作为参数传递给方法来执行方法。

Class[] argTypesList = new Class[] {String[].class, String[].class, MyClass[].class};       
Method methodToExecute = classToCall.getDeclaredMethod(“Method1”, argTypesList);

方法1是:

Method1(String[] a, String[] b, MyClass[] myclass)

这里的第三个参数是用户定义的类数组。

Class myClass= Class.forName("somepackage.MyClass");

argTypesList = new Class[] {String[].class, String[].class, myClass[]};

这给出了以下错误

  

错误:' .class'预期

使用myClass[].class,它会给出

  

无法找到myClass的符号

2 个答案:

答案 0 :(得分:1)

你可以像这样使用它

Class myClass = Class.forName("...");
Class[] argTypesList = new Class[] { String[].class, String[].class, Array.newInstance(myClass, 0).getClass() };

答案 1 :(得分:1)

您可以使用[L前缀并使用;后缀来为此添加前缀。像这样:

Class myClasses = Class.forName("[Lsomepackage.MyClass;");
argTypesList = new Class[]{String[].class, String[].class, myClasses};