码迷,mamicode.com
首页 > 编程语言 > 详细

wrong number of arguments,java方法反射时数组参数的坑

时间:2015-09-23 00:54:11      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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)

wrong number of arguments,java方法反射时数组参数的坑

标签:

原文地址:http://www.cnblogs.com/firstdream/p/4830960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!