我尝试编写一个方法,通过使用反射将用户定义类的数组作为参数传递给方法来执行方法。
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的符号
答案 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};