(Object.class)のようなクラスのハッシュマップを作成したいと思います。同じクラスの2つのクラスは同じハッシュコードを持ち、等しいと見なされますか?
Object.classは別のObject.classと見なされますか?
異なるハッシュコードを持つObject.classの別のインスタンスが存在することはありますか?
(Object.class)のようなクラスのハッシュマップを作成したいと思います。同じクラスの2つのクラスは同じハッシュコードを持ち、等しいと見なされますか?
Object.classは別のObject.classと見なされますか?
異なるハッシュコードを持つObject.classの別のインスタンスが存在することはありますか?
リテラルObject.class
は、常に同じクラスローダー内で同じ参照を返します。 section 15.8.2 of the JLSから
現在のインスタンスのクラスの定義クラスローダーによって定義される名前付きの型(または空隙用)のクラスオブジェクトに
クラスリテラル評価します。
注上記の引用では定冠詞(「」) - 特定のクラスに対してだけ Class
オブジェクトは、同じクラスローダ内、があります。
同じように、同じオブジェクトへの参照が2つあるため、同じハッシュコードが得られます。
与えられたクラスローダー内では、ロードされたクラスごとに、タイプがClass
の単一のオブジェクトがあります。
x1.getClass()
およびx2.getClass()
は、x1
とx2
が同じダイナミックタイプである限り、同じ参照を返します。
タイプされたクラスごとに.classオブジェクトのインスタンスが1つしかないので、すべての参照は(Object.classの)この同じオブジェクトを指しているため、同じハッシュコードを持ちます