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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT人 中级黑马   /  2013-11-27 15:17  /  979 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Method methodCharAt = String.class.getMethod("charAt",int.class);
中为什么参数是int.class,而不是int。原理是是什么????

评分

参与人数 1技术分 +1 黑马币 +5 收起 理由
枫儿 + 1 + 5 神马都是浮云

查看全部评分

4 个回复

倒序浏览
方法规定了取得的方法的参数的类型是Class类型,所以也就...
回复 使用道具 举报
你要这样想,String.class是什么?是一堆字节码的对象,它并不是String类,仅仅是从硬盘上的二进制数据变成了字节码而已,它还需要类的加载器加载进内存中才能变为String类,这个在后面会讲到的。
在String内中,这个方法需要接收一个int的参数,但是这个仅仅是一个字节码文件的对象,它也不认识int是什么东西,只认识int的字节码,所以这里需要接收一个int的字节码对象。
如果还不理解,就想想String类中的这个方法被编译时产生了什么东西?产生的是一堆看不懂的字节码,那么这个参数int是不是也被编译成了字节码呢?我们看不懂这个字节码,字节码也看不懂我们知道的int,就是这个道理。

评分

参与人数 1黑马币 +3 收起 理由
hurryup + 3 忒详细,赞一个

查看全部评分

回复 使用道具 举报
谢谢!似乎明白一点了!
回复 使用道具 举报
IT人 发表于 2013-11-27 21:53
谢谢!似乎明白一点了!

问题解决了就把类型改成提问结束1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马