現在、クラスローダーとその階層機能を読み込み中です。 私はコードの下に呼び出す場合 - 私の理解あたりとしてClass.forName()を2回呼び出す
ClassA a= Class.forName("com.test.ClassA")
、今ではアプリケーションクラスローダの助けを借りて、メモリに初期化され、ロードされます。 私は以下の質問があります:
- 上記のコードをもう一度呼び出すとどうなりますか? 'ClassA'のためにメモリに新しいインスタンスが作成されるのでしょうか、それとも同じロードされたクラス参照を返しますか?それを使用することになりますどのような 「あなたはまた、複数のソースから同じクラスをロードすることができ、彼らはJVMに別のクラスとして扱われる別々のクラスローダを使用することにより」javarevisitedのこのあたりpostとして
- YESの場合、?
BTW: 'Class.forName'は、forNameで渡されたクラスのインスタンスではなく、' Class'型のオブジェクトを返します。 'ClassA a = Class.forName(" com.test.ClassA ")'は間違っています。これは 'Class a = Class.forName(" com.test.ClassA ")' –