Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用reflection Class.getMethod时发生异常_Java_Reflection_Illegalargumentexception - Fatal编程技术网

Java 调用reflection Class.getMethod时发生异常

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

下面是使用反射调用方法的代码。但是我越来越

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",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()
不正确

你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数。类你看这里了吗似乎应该传递实际整数而不是整数整数类