Class.forName("com.mysql.jdbc.Driver");
是加载并生成一个com.mysql.jdbc.Driver实例。
与 DriverManager中注册的
package com.mysql.jdbc
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
// ~ Static fields/initializers
// --------------------------------------------- //
// Register ourselves with the DriverManager
//
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
// ~ Constructors
// -----------------------------------------------------------
/**
* Construct a new driver and register it with DriverManager
*
* @throws SQLException
* if a database error occurs.
*/
public Driver() throws SQLException {
// Required for Class.forName().newInstance()
}
}
是否为同一个实例?
代码看来是new的一个新的。请大神解释下原因?
是否我对Class.forName("com.mysql.jdbc.Driver"); 理解有误
即初始化与实例化的区别?
jdbc
------解决方案--------------------
Class.forName("com.mysql.jdbc.Driver"); 只加载类
Class.forName("com.mysql.jdbc.Driver").newInstance(); 实例化对象
Class.forName("")是为了加载类,从而调用里面的静态代码块,然后注册驱动
------解决方案--------------------
Class.forName
其实也是调用了loadClass的方法。
然后又做了一些数据加载的操作,但是构造方法是未执行的,