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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© せR3n、何必装纯 黑马帝   /  2011-11-22 14:47  /  1642 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前一段时间看了张老师讲的反射,没弄明白,跳过去了,今天又去看了。但看到方法的时候,有点弄不明白
如:Method mt=String.class.getMethod("charAt",int.class);
为什么要用String去点呀?

5 个回复

正序浏览
得到字节码对应的实例对象有三种方式

(1)类名.class                       例如Peson.class

(2)对象.getClass()        例如new Date().getClass()

(3)Class.forName("类名") 例如Class.forName("java.util.Date")

这里String就是java类,String.class就是用来得到String类的字节码

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
崔浩 黑马帝 2011-11-22 16:53:19
报纸
首先class是通过Object继承过来的,是一个静态的属性,String.class得到的是String在内存中的字节码,然后同过getMethod("charAt",int.class);其中charAt代表的是方法的名称,而int.class 代表的是方法中参数的类型

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
补充一点:反射就是用另一种方式去调用一个类,并且比原来的方式还要多。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 高庆亮 于 2011-11-22 16:46 编辑

因为是获得String类的Method,如果你把它换成其他类就是获得其它类的Method。
Method mt=String.class.getMethod("charAt",int.class);
这句话的意思是通过反射获得String类里的charAt方法。
(老师记得给我加分呀!就差3分了。我就要去黑马啦!)

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 回答得好,分自然到。

查看全部评分

回复 使用道具 举报
因为他要反射出String类的方法呀。

评分

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

查看全部评分

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