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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© whocases 黑马帝   /  2012-6-22 17:42  /  1475 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 whocases 于 2012-6-24 21:48 编辑

得到各个字节码对应的实例对象可以通过类名.class;对象.getClass();Class.forName("类名")三种方法,那么这三种方法有什么区别呢?

2 个回复

倒序浏览
Class clazz=A.class; JVM使用类A的类装载器,将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象

Class clazz=对象引用obj.getClass();返回引用obj运行时真正所指的对象所属的类的Class的对象  

Class.forName("类名");将类A装入内存 ,并做类的初始化

回复 使用道具 举报

Object getClass();

获取Class对象的方式一:
Person p=new Person();
p.getClass();

获取Class对象方式二:
每一个类型都具备一个class静态属性
通过该属性即可获取该类的字节码文件对象
比第一种简单了一些,仅用一个静态属性就搞定了
但是,还是有一点不方便,还必须要使用到该类

Class clazz=Person.class;


获取Class对象方式三:
去找Class类中是否有提供对应的获取方法呢?
找到了,forName   返回class
Class clazz=Class.forName("cn.itcast.bean.Person");//必须明确全类名,包名。类名
forName的作用
        返回字节码:返回范式1.这份字节码曾经在加载过,已在jvm中,直接返回
        jvm还没有这份字节码,则用类加载,把字节码加载
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马