zoukankan      html  css  js  c++  java
  • wrong number of arguments,java方法反射时数组参数的坑

    java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数。
    两个数组不是一个意思啊。
    我们应该把数组转为objet,这样才表示一个参数。

    import java.lang.reflect.Method;
    
    public class MethodTest {
    	public void a(String[] args) {
    		System.out.println("a");
    	}
    
    	public static void main(String[] args) throws Exception {
    		MethodTest obj = new MethodTest();
    		Method m = obj.getClass().getMethod("a", String[].class);
    
    		m.invoke(obj, new String[1]);  // new String[1] 其实是null,是一个object
    		m.invoke(obj, (Object) new String[] {}); // 这里强制转成了object,所以也是object
    		m.invoke(obj, new String[] {}); // 报错,这里是个数组,是个object数组,a方法只有一个参数,所以报错
    
    	}
    }
    
    


    结果是
    a
    a
    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:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    C博客作业05-指针
    C语言——数组博客作业
    c语言博客3—函数
    循环结构博客
    c语言博客,顺序与分支结构
    Java面向对象课程设计——购物车
  • 原文地址:https://www.cnblogs.com/firstdream/p/4830960.html
Copyright © 2011-2022 走看看