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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 四顾行者 中级黑马   /  2014-6-16 23:15  /  1069 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁知道啊?

5 个回复

倒序浏览
江祖贇 来自手机 中级黑马 2014-6-16 23:18:44
沙发
可以去api看看………
回复 使用道具 举报
Class.forName( )静态方法的目的是为了动态加载类,
至于什么时候用,可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?              A a = (A)Class.forName("pacage.A").newInstance();   
这和   A a = new A();      
是一样的效果。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
通过类名获取字节码对象,如果类已加载到内存,则直接获取,如果还没加载,,那么这话就可以把其加载到内存,再获到字节码对象,所以,,这个方法 的参数应该是一个完整 的路径!
回复 使用道具 举报
反射机制范围里的基础知识,在不new对象的情况下,通过类名取得该类字节码对象。
回复 使用道具 举报
Class.forName(xxx.xx.xx) 返回的是一个类

首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。

至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。
A a = (A)Class.forName("pacage.A").newInstance();
这和你
A a = new A();
是一样的效果。
jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。

Class.forName(xxx.xx.xx) 返回的是一个类
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马