我正在学习java,在了解ClassNotFoundException概念的过程中,我遇到了术语Class.forName("xyz");。我知道这是装入类的一种方式。我的问题是,在java中装入类的不同方式是什么?什么时候使用哪一个?什么比其他的更受欢迎?
发布于 2013-04-22 02:28:54
我将从最简单的开始(这里我假设类定义在类路径中可用,并且JVM可以加载它):
用于加载和初始化class.It的SomeClass someInstance =class.It使用当前类的类加载器。
加载类的Class.forName("XYZ");
ClassLoader的实例并在该实例上调用loadClass(),该实例可以是自定义ClassLoader或系统ClassLoader。ClassLoader.getSystemClassLoader().loadClass("XYZ");
initialize参数指定类是否必须初始化。Class.forName(字符串名,布尔初始化,ClassLoader加载器)
对于JDBC,我们需要加载驱动程序类并初始化它。在某个地方,通过运行一些静态初始化器(尽管我还没有看到内部工作代码),驱动程序类被注册到JDBC驱动程序管理器。因此,我们需要使用类加载机制,其中加载驱动程序类并运行其静态初始化块。因此,最受欢迎的方式是Class.forName()。
https://stackoverflow.com/questions/16134621
复制相似问题