从this来源我读到了:
您可能有使用JDBC驱动程序的经验。例如, classloader尝试加载和链接中的Driver类 “org.gjt.mm.mysql”包。如果成功,则静态初始化程序为 调用。
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword");
让我们看看为什么需要Class.forName()将驱动程序加载到内存中。所有JDBC 驱动程序有一个静态块,可以使用DriverManager注册自己 和DriverManager只有静态初始化程序。
MySQL JDBC Driver有一个静态初始化程序,如下所示:
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
} }
这是否意味着DriverManager是Singleton类?
答案 0 :(得分:5)
这不是单身人士。它是一个纯实用程序类,只有静态方法。这个类有0个实例。单例将有一个类的实例,您可以访问此实例以在其上调用实例方法。
Java已被记录,它是开源的。您可以查看类的来源以了解它的工作原理。