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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 下雨天 中级黑马   /  2013-7-19 15:20  /  1008 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-21 19:09 编辑

Class c1=Person.class     和     Class c2=Class.forName("Person")
这两种方法都是获取Person类的字节码,第一个很好理解,但是第二个的存在有什么特殊的意义呢,既然已经知道类名了 直接用第一种不就可以了吗?

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

2 个回复

倒序浏览
你好,其实它们还是有一定的区别的。
Class.forName与类名.class都会导致类的加载,但是它们是有区别的:
Class.forName可导致类的静态初始化,但类名.class只会加载类,不会执行静态初始化(有父类的话先加载父类的)

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
Class c2=Class.forName("Person")
这种方法还是比较常用的。这个参数可以写在配置文件里。在配置文件里写什么类。就加载什么类。就不要修改代码了

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

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