使用forName和GetClassLoader

时间:2015-07-06 16:44:52

标签: java

当我阅读有关Class的文档时,对于forName()方法,文档说:

Class.forName ("Foo")

相当于:

Class.forName ("Foo", true, this.getClass().GetClassLoader())

我不知道this.getClass().GetClassLoader()的含义以及为什么它以这种方式工作,我只知道当JVM编译代码时它是一个加载类的ClassLoader。

2 个答案:

答案 0 :(得分:0)

ClassLoader是一个能够将字节码作为类加载到VM中的对象。有关官方文档,请参阅here

Class.forName(String name)允许您在运行时加载一个类 - 提供的String可以在运行时确定。要实际加载一个类,需要一个ClassLoader,因此选择加载调用对象的类的ClassLoader是默认的。您可以使用this.getClass().getClassLoader()访问该ClassLoader。

第二个参数 - 默认为true - 确定是否在必要时对该类执行静态初始化(如果之前没有执行过)。

答案 1 :(得分:0)

class.forName返回与具有给定字符串名称的类或接口关联的Class对象。调用此方法等同于:

Class.forName(className, true, currentLoader)

其中currentLoader表示当前类的定义类加载器。