java 反射的一些方法

qjm201000 发布于 2013/05/23 23:39
阅读 280
收藏 0

 //运行无参的这个方法
       Method method= c.getDeclaredMethod("check", new Class[]{});
       //暴力运行私有无参方法
       method.setAccessible(true);
       //给方法参数给值
       method.invoke(obj, new Object[]{});

我就问下,第二行的  new Class[]{}  这个是什么意思?后面不是传的参数的类型嘛,这个啥意思?

最后一行的   new Object[]{}又是什么意思?求大神解释一下,感激不尽

加载中
0
excepiton
excepiton
直接翻API文档比问人更快
0
优雅先生
优雅先生

下面是getDeclaredMethod的接口定义:

public Method getDeclaredMethod(String name,
                                Class... parameterTypes)
第二个是一个变长参数,表示待反射的方法的参数的类型。所以你这里的new Class[]{}空数组表示待反射的方法没有参数。

而Method.invoke方法的接口定义如下:

public Object invoke(Object obj,
                     Object... args)
第二个参数表示调用该方法传入的参数,也是变长参数,所以最后一行传入new Object[]{}空对象数组表示不用传参数呗(有点只起占位作用的意思)。

详细请参考:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getDeclaredMethod(java.lang.String, java.lang.Class...)

http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Method.html#invoke(java.lang.Object, java.lang.Object...)

0
暴走的蛇
暴走的蛇
第二个参数是传入函数的参数数据类型,比如一个类里面可能包含void a()和void a(String b)的函数,第二个参数是指定函数的参数数据类型的以便于准确的获得所想获得的方法!
返回顶部
顶部