私は特にと一緒に働いたことがありませんclass literals
。それらは主にリフレクションAPIで使用されていると思います。クラスリテラルに対していくつのインスタンスが存在する可能性があるかを知りたいですか?それらはinstance controlled
(たとえばシングルトンですか?)
Class<String> stringClass = String.class;
私は特にと一緒に働いたことがありませんclass literals
。それらは主にリフレクションAPIで使用されていると思います。クラスリテラルに対していくつのインスタンスが存在する可能性があるかを知りたいですか?それらはinstance controlled
(たとえばシングルトンですか?)
Class<String> stringClass = String.class;
Classオブジェクトは、(少なくとも理論的には)クラスがロードされたときに作成されます。クラスごとに1つだけあります。ただし、異なる値を持つ複数のStringオブジェクトを持つことができるのと同じように、特定のクラスごとに複数のClassオブジェクトがあるため、これをシングルトンと呼ぶのは正しくありません。
異なるクラスローダーによってロードされる場合は、「abc」という名前の2つの異なるクラスオブジェクトを持つことができることに注意してください。これらは、2つの異なるクラス(類似していない場合もあります)と2つの異なるClassオブジェクトになります。
クラスは、クラスローダーによってヒープ内のオブジェクトとしてロードされます。
したがって、クラスローダーごとに存在するクラスリテラルインスタンスは1つだけです。
ただし、コード内に型クラスのインスタンスをいくつでも作成できます。