4

Class.forNameドライバークラスをインスタンス化するために使用されます。 Class.forNameオブジェクトがない場合は、単にドライバー クラス インスタンスをインスタンス化します。その場合、DriverManager クラスはインスタンス化されたドライバー クラスの参照をどのように取得しますか?

4

3 に答える 3

3

Class.forName("X") により、X という名前のクラスが動的にロードされます。基本的に、forName("X") を呼び出すと、X という名前のクラスが初期化されます (つまり、JVM は、クラスのロード後にすべての静的ブロックを実行します)。

あなたの質問に答えるために、JVM は静的ブロックを実行し、ドライバーはそれ自体を DriverManager に登録します。

このプロセスは、次のリンクで非常によく説明されています: http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17

于 2012-10-16T14:11:35.473 に答える
1

インターフェイスについては、 javadocを参照してくださいDriver

それは言う、

Driver クラスがロードされると、それ自体のインスタンスを作成し、それを DriverManager に登録する必要があります。これは、ユーザーが呼び出してドライバーを読み込んで登録できることを意味します。

Class.forName("foo.bah.Driver")

于 2012-10-16T07:25:20.227 に答える
0

javadocから

getConnectionメソッドが呼び出されると、DriverManagerは、初期化時にロードされたドライバーと、現在のアプレットまたはアプリケーションと同じクラスローダーを使用して明示的にロードされたドライバーの中から適切なドライバーを見つけようとします。

初期化時にロードされるドライバー::DriverManagerクラスは、「jdbc.drivers」システムプロパティで参照されるドライバークラスをロードしようとします。

明示的にロードされたドライバー::byClass.forName( "driver.name");

于 2012-10-16T07:21:10.757 に答える