当我阅读有关Class
的文档时,对于forName()
方法,文档说:
Class.forName ("Foo")
相当于:
Class.forName ("Foo", true, this.getClass().GetClassLoader())
我不知道this.getClass().GetClassLoader()
的含义以及为什么它以这种方式工作,我只知道当JVM编译代码时它是一个加载类的ClassLoader。
答案 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表示当前类的定义类加载器。