Java类接受一整块的静态初始化代码,这部分代码会在第一次load class的时候执行。
当类有一些静态变量,同时不能用一行代码解决初始化时,可以使用这个方法。而不是建一个initial方法,每次new的时候都调用一次,这样的好处就是在使用Class.forName(xxx.xx.xx)等方法加载类的时候,自动调用static{……}内的语句,完成对类的初始化,常用来加载驱动程序,比如Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");用来注册JDBC-ODBC桥驱动,为连接数据库做准备。
//JdbcOdbcDriver.class类的静态初始化器部分的代码
static
{
JdbcOdbcTracer localJdbcOdbcTracer = new JdbcOdbcTracer();
if (localJdbcOdbcTracer.isTracing()) {
localJdbcOdbcTracer.trace("JdbcOdbcDriver class loaded");
}
JdbcOdbcDriver localJdbcOdbcDriver = new JdbcOdbcDriver();
try
{
DriverManager.registerDriver(localJdbcOdbcDriver);
}
catch (SQLException localSQLException) {
if (localJdbcOdbcTracer.isTracing())
localJdbcOdbcTracer.trace("Unable to register driver");
}
}
}
在"sun.jdbc.odbc.JdbcOdbcDriver"类中的静态初始化器中实现DriverManager.registerDriver(driver)方法,向DriverManager
注册给定驱动程序。之后就可以使用DriverManager.getConnection(URL)尝试建立到给定数据库 URL 的连接,DriverManager
会尝试从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。