Class.forName()
Class オブジェクト (特定の Java クラスを表すオブジェクト) を返します。
newInstance()
-- java.lang.Class のメソッド -- 表現されたクラスの引数なしコンストラクタを使用して、そのクラスのインスタンスを作成します。
あなたの質問について:(http://www.coderanch.com/t/385654/java/java/Difference-between-Class-forName-Classからの参照)
Class.forName()
クラスへの参照を取得し、クラスClass.forName().newInstance()
の引数なしコンストラクターを使用して新しいインスタンスを返そうとします。これまでのところ驚くことはありません。のもう 1 つの一般的な使用法Class.forName()
は、クラスをロードすることです。これは、一部のタイプのクラスには、他の目的で必要なロード プロセスによる副作用があるためです。JDBC
Driver クラスは、DriverManager
ロードされたときに自分自身を Class に登録する必要があるため、このプロセスの大規模なユーザーです。
おそらく v1.1.8、おそらく Java 1.2 までの Java の暗黒時代には、デフォルトClassLoader
ではインスタンスが作成されるまでクラスがロードされないという問題がありました。このような場合、Class.forName()
ではなくを使用すると、JDBC コードは失敗しますClass.forName().newInstance()
。
newInstance()
すぐに破棄されるインスタンスを作成しますが、正しく機能させる必要がありましClass.forName()
た。この回避策は不要になりました。