黑马程序员技术交流社区

标题: class.forName()的作用 [打印本页]

作者: 四顾行者    时间: 2014-6-16 23:15
标题: class.forName()的作用
谁知道啊?
作者: 江祖贇    时间: 2014-6-16 23:18
可以去api看看………
作者: 轩辕冰晨    时间: 2014-6-16 23:35
Class.forName( )静态方法的目的是为了动态加载类,
至于什么时候用,可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?              A a = (A)Class.forName("pacage.A").newInstance();   
这和   A a = new A();      
是一样的效果。
作者: 沉默的爱    时间: 2014-6-16 23:36
通过类名获取字节码对象,如果类已加载到内存,则直接获取,如果还没加载,,那么这话就可以把其加载到内存,再获到字节码对象,所以,,这个方法 的参数应该是一个完整 的路径!
作者: 闫镜湾    时间: 2014-6-16 23:39
反射机制范围里的基础知识,在不new对象的情况下,通过类名取得该类字节码对象。
作者: Aron    时间: 2014-6-17 19:45
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会执行该类的静态代码段




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2