我只是想通过反射调用普通的方法,其实就是一个很普通很简单的方法调用,但是却报错了,不知道哪里出了问题,代码如下:
public static void test(String[] args){
for (Object str : args) {
System.out.println(str);
}
}
public static void invokeMethod(String classFullName,String methodName,String[] args) throws Exception{
Class<?> c = Class.forName(classFullName);
Object obj = c.newInstance();
Method method = c.getMethod(methodName, args.getClass());
if(!method.isAccessible()){
method.setAccessible(true);
}
System.out.println(method);
method.invoke(obj, args);
}
public static void main(String[] args) throws Exception {
//testClass();
//printMethods("com.wangbiao.reflection.ReflectionTest");
String[] arguments = new String[]{"Programing Language "," is "," Java"};
invokeMethod("com.wangbiao.reflection.ReflectionTest","test",arguments);
}
错误如下:
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.wangbiao.reflection.ReflectionTest.invokeMethod(ReflectionTest.java:70)
at com.wangbiao.reflection.ReflectionTest.main(ReflectionTest.java:78)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
method.invoke(obj,args);
改成:
method.invoke(obj,(Object)args);