Class.forName
用于实例化驱动程序类。
Class.forName
没有对象,它只是实例化驱动程序类实例。如果是这样,DriverManager类将如何获取实例化驱动程序类的引用?
答案 0 :(得分:3)
Class.forName(“X”)导致名为X的类被动态加载, 基本上调用forName(“X”)会导致名为X的类被初始化(即,JVM在类加载后执行其所有静态块)。
要回答您的问题,JVM会执行静态块,驱动程序会使用DriverManager注册自己。
以下链接对此过程进行了详细说明: http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17
答案 1 :(得分:1)
请参阅Driver
界面的javadoc。
它说,
当加载Driver类时,它应该创建自己的实例 并使用DriverManager注册它。这意味着用户可以 通过调用
加载并注册驱动程序的Class.forName( “foo.bah.Driver”)
答案 2 :(得分:0)
来自javadoc
初始化时加载的调用方法getConnection时,DriverManager会 尝试从加载的那些中找到合适的驱动程序 初始化和使用相同的类加载器显式加载的那些 作为当前的applet或应用程序。
驱动程序:: DriverManager类将尝试加载“jdbc.drivers”系统属性中引用的驱动程序类
通过Class.forName(“driver.name”);
显式加载的驱动程序