黑马程序员技术交流社区
标题:
Method.invoke方法的用法
[打印本页]
作者:
wangkerui
时间:
2014-7-1 23:24
标题:
Method.invoke方法的用法
本帖最后由 wangkerui 于 2014-7-2 22:13 编辑
Method.invoke方法到底是什么意思啊,怎样用啊?
作者:
来自沙沙的我
时间:
2014-7-1 23:54
同学,这个张老师已经说得很清楚了啊,多看看视频啊。
个人理解,反射就方法操作对象,正常的是对象操作方法。很明显反射可以操作所有的对象,对象只能操作其本身的方法,这样扩展性大大加强。
作者:
EarlyHeart
时间:
2014-7-2 07:47
可能用一个代码示例来说明更容易理解:
public static void main(String[] args) throws Exception {
Class c = String.class;//得到String类的Class对象
Method m = c.getMethod("charAt", new Class[] {int.class});//得到String类中定义的参数为int的charAt方法的Method对象
//下面即为m调用invoke方法
Object[] objs = { new Integer(1) };//invoke第二个参数objs是个Object[]
char ch = (char)m.invoke("abc", objs);//invoke方法第一个参数为调用m(charAt())这个方法的对象,第二个参数为m(charAt())这个方法的参数,所以这句代码等价于"abc".charAt(1);
System.out.println(ch);//验证结果为b与"abc".charAt(1)等价
//注意:如果上述代码中得到的方法对象m是一个静态方法,那么m.invoke()方法的第一个参数直接写null就可
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2