`

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)
0
1
分享到:
评论

相关推荐

    JS函数arguments数组获得实际传参数个数的实现方法

    下面小编就为大家带来一篇JS函数arguments数组获得实际传参数个数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java反射技术的一般应用

    在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...

    Javascript学习笔记之函数篇(四):arguments 对象

    因此,我们不能直接对 arguments 使用一些数组的方法,例如 push, pop 或 slice 等。 所以为了使用这些方法,我们就需要将其转换为一个真正的数组。 转化为数组 下面的代码将会返回一个包含 arguments 对象所有元素...

    深入解析JavaScript中的arguments对象

    所有的函数都有一个自己的arguments对象,用来储存它实际接受到的参数,而不局限于函数声明时所定义的参数列表。它不是数组却类似数组,具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值...

    【JavaScript源代码】JavaScript中arguments的使用方法详解.docx

    JavaScript中arguments的使用方法详解  js这是一门弱语言,不像其他语言如c,java等,有严格的规范, 所以现在也流传着一种说法,js本来就不是一种语言; 说回arguments,它是js中函数内置的一个对象,而执行函数...

    javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历

    javascript 浏览器 判断 绑定事件 arguments 转换数组 数组遍历等函数

    压力测试工具apache-ab讲解

    近在做webservices,得到的数据是从德国那边的服务器。要将这些数据整合到现在网站中去。不知道性能如何。做个压力测试。现在有些压力测试工具都是收费的。在开源的apache中自带个ab工具。在C:Apache2....

    终于解决了IE8不支持数组的indexOf方法

    在使用indexOf方法前,执行一下下面的js, 原理就是如果发现数组没有indexOf方法,会添加上这个方法。 代码如下:if (!Array.prototype.indexOf){ Array.prototype.indexOf = function(elt /*, from*/) { var len ...

    JavaScript中arguments和this对象用法分析

    本文实例讲述了JavaScript中arguments和this对象用法。分享给大家供大家参考,具体如下: ...当函数被调用时,传入的参数将保存在arguments类数组对象中,通过arguments可以访问所有该函数被调用时传递给它的参数列表。

    js的隐含参数(arguments,callee,caller)使用方法

    在提到上述的概念之前,首先想说说javascript中函数的...Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长

    xiangxiong#blog#JavaScript深入之类数组对象与arguments1

    JavaScript深入之类数组对象与argumentsJavaScript深入系列第十三篇,讲解类数组对象与对象的相似与差异以及arguments的注意要点类

    Rethinking the design of the Internet:The end to end arguments vs. the brave new world

    Rethinking the design of the Internet:The end to end arguments vs. the brave new world 作者:Marjory S. Blumenthal, Computer Science & Telecommunications Bd David D. Clark, M.I.T. Lab for Computer ...

    【JavaScript源代码】javascript类数组的深入理解.docx

    javascript类数组的深入理解  js数组,相比大家都很熟悉,因为走到哪都要...3、类数组不具备数组的原型方法,因此类数组不可调用相关数组方法(如,push,slicec,concat等等) 常见的类数组有  函数的参数arguments

    理解Javascript函数形式参数与arguments

    理解Javascript函数形式参数与arguments

    JavaScript Array对象扩展indexOf()方法

    背景:JavaScript中Array对象的标准方法中,没有indexOf()方法,可通过下面的代码扩展。 代码如下: if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt) { var len = this.length >>> 0; var ...

    mvwscanw.rar_The Number

    implement the mvscanw commands. Due to the variable number of arguments, they cannot be macros.

    Java反射技术的一般应用(放低分数供大家学习)

    在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...

    Javascript数组操作高级心得整理

     使用Function类的valueOf()方法和toString()方法 11 (4) 闭包 11 8. 循环语句 11 (1) for循环 12  for循环的使用格式 12  例子 12 (2) while循环 12  While循环的使用格式 12  例子 12 (3) 使用break和...

    arguments对象的使用

    在函数定义时没有形参名称时,向函数传递参数的使用方法。 实例演示了arguments对象的使用方法。

    深入学习js函数的隐式参数 arguments 和 this

    其中arguments是一个类数组结构,它保存了调用时传递给函数的所有实参;this是函数执行时的上下文对象, 这个对象有些让人感到困惑的行为。 下面分别对他们进行讨论。 1. arguments 1.1 背景 JavaScript 允许函数在...

Global site tag (gtag.js) - Google Analytics