A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高双武 黑马帝   /  2011-11-18 20:10  /  2830 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面这段代码
String str2="asd";
Method methodCharat=String.class.getMethod("charAt", int.class);
methodCharat.invoke(str2, 1);
这是反射调用,这种方法与直接用str2.charAt(1)调用有什么区别?反射调用的目的是什么?

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

2 个回复

倒序浏览
徐杨 黑马帝 2011-11-18 20:56:58
沙发
想要运行一个类,必须先要获取到该类的字节码文件对象。
而解剖使用的就是Class类中的方法。所以先要获取到每一个字节码文件对应的Class类型的对象

反射的意义在于 反射就是加载类,并解剖出类的各个组成部分。在你不知道类中有什么的情况下可以解剖出类中所有的方法属性对象等

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
个人感觉,区别是编译时检查的条件不同。直接调用时,String必须是已经存在的类,方法也必须存在,且调用时会检查方法的参数类型(参数类型不固定)。而反射调用检查的是invoke方法的参数,invoke的参数是固定的类型,一个是对象引用,一个是字符串。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马