この情報源から、私はそれを読みました:
JDBC ドライバーを扱った経験があるかもしれません。たとえば、クラスローダは「org.gjt.mm.mysql」パッケージの Driver クラスをロードしてリンクしようとします。成功した場合、静的初期化子が呼び出されます。
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword");
ドライバーをメモリにロードするために Class.forName() が必要な理由を見てみましょう。すべての JDBC ドライバーには、それ自体を DriverManager に登録する静的ブロックがあり、DriverManager には静的な初期化子のみがあります。
MySQL JDBC ドライバーには、次のような静的初期化子があります。
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
} }
これは、DriverManager が Singleton クラスであることを意味しますか?