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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张邦庆 黑马帝   /  2011-10-31 11:24  /  1414 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射是返回一份字节码,这份字节码必须已经存在了,如果我们的类没有编译,也就是不存在类的字节码,静态方法forName()反射时,就不能找到类的字节码,是不是这样呢?

评分

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

查看全部评分

2 个回复

倒序浏览
应该是这样的~
就比如张老师高新技术视频里面反射的例子,如果我们把ReflectPoint的类删掉了,就不能进行反射了.

Class.forName()的作用:得到这个类的字节码,包含下面两种情况
.这个类的字节码已经加载到java虚拟机中,只需要找到返回.
.这个类的字节码在java虚拟机没找到,于是用类加载器加载,然后把类的字节码缓存起来再返回

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不是没有编译,就找不到类的字节码,而是类必须装载在虚拟机里,才能才能找到类的字节码进行反射。如果我们自定义的类就不能进行反射,即使编译器通过了也不行,我们必须用类装载器装载,才能找到类的字节码进行反射。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

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