首页 > 解决方案 > 使用反射调用具有用户定义的类数组参数的方法

问题描述

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

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 的符号

标签: javareflection

解决方案


你可以通过在你的类名[L前加上;. 像这样:

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

推荐阅读