Java 调用reflection Class.getMethod时发生异常
下面是使用反射调用方法的代码。但是我越来越 java.lang.IllegalArgumentException:参数数目错误 方法.invoke处出现异常。原因是什么Java 调用reflection Class.getMethod时发生异常,java,reflection,illegalargumentexception,Java,Reflection,Illegalargumentexception,下面是使用反射调用方法的代码。但是我越来越 java.lang.IllegalArgumentException:参数数目错误 方法.invoke处出现异常。原因是什么 public class B { public static void main(String[] args) { A a = new A(); Method m; try { m = a.getClass().getMethod("m3",Inte
public class B {
public static void main(String[] args) {
A a = new A();
Method m;
try {
m = a.getClass().getMethod("m3",Integer.class);
m.invoke(a);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class A {
public void m3(Integer x){
System.out.println("ssss");
}
}
第一个参数将调用该方法的对象(如您所做的正确操作)作为参数,第二个参数将传递给方法调用的任何参数作为可变长度参数
在您的例子中,您忘记了方法Integer
-参数。您试图调用的方法是A.m3()
,该方法在类中不存在
正确的做法是:
m.invoke(a, 12); // or any int/Integer as it's second parameter
第一个参数将调用该方法的对象(如您所做的正确操作)作为参数,第二个参数将传递给方法调用的任何参数作为可变长度参数
在您的例子中,您忘记了方法Integer
-参数。您试图调用的方法是A.m3()
,该方法在类中不存在
正确的做法是:
m.invoke(a, 12); // or any int/Integer as it's second parameter
第一个参数将调用该方法的对象(如您所做的正确操作)作为参数,第二个参数将传递给方法调用的任何参数作为可变长度参数
在您的例子中,您忘记了方法Integer
-参数。您试图调用的方法是A.m3()
,该方法在类中不存在
正确的做法是:
m.invoke(a, 12); // or any int/Integer as it's second parameter
第一个参数将调用该方法的对象(如您所做的正确操作)作为参数,第二个参数将传递给方法调用的任何参数作为可变长度参数
在您的例子中,您忘记了方法Integer
-参数。您试图调用的方法是A.m3()
,该方法在类中不存在
正确的做法是:
m.invoke(a, 12); // or any int/Integer as it's second parameter
请看原始方法签名-
public Object invoke(Object obj,
Object... args)
throws IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
而且它没有重载版本。因此,您的方法调用-m.invoke()
不正确请查看原始方法签名-
public Object invoke(Object obj,
Object... args)
throws IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
而且它没有重载版本。因此,您的方法调用-m.invoke()
不正确请查看原始方法签名-
public Object invoke(Object obj,
Object... args)
throws IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
而且它没有重载版本。因此,您的方法调用-m.invoke()
不正确请查看原始方法签名-
public Object invoke(Object obj,
Object... args)
throws IllegalAccessException,
IllegalArgumentException,
InvocationTargetException
而且它没有重载版本。因此,您的方法调用-
m.invoke()
不正确你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数整数类