在具有指定参数的方法对象上调用invoke方法对象表示的基础方法。
个别参数自动解包以匹配原始形式参数,原始参考参数和参考参数都需要进行方法调用转换。
比如在以下代码中
class Employee{
public static void doWork(int...is) {
System.out.println("doWork被调用:"+Arrays.toString(is));
}
public static void doWorkCite(String...is) {
System.out.println("doWorkCite被调用:"+Arrays.toString(is));
}
}
public class MethodInvokeArrDemo {
public static void main(String[] args) throws Exception {
//数组的元素类型是引用类型
Method methodCite=clz.getMethod("doWorkCite", String[].class);
System.out.println(methodCite);
methodCite.invoke(null, new String[]{"adad","dagfaga","dafa","dafgag"});
}
}
当
methodCite.invoke(null, new String[]{"adad","dagfaga","dafa","dafgag"});
这一行代码执行的时候会自动解包为”adad”,”dagfaga”,”dafa”,”dafgag”因此会出现wrong number of arguments
的错误为了避免这种问题的出现我们应该将代码修改为
methodCite.invoke(null,new Object[]{ new String[]{"adad","dagfaga","dafa","dafgag"}});