0

重複の可能性:
Java の静的ネスト クラス、なぜ?

JDK HashTable でソースコードを読んでいますが、以下のようなコード スニペットがあります。

/** ハッシュテーブル衝突リスト。*/

private static class Entry<K,V> implements Map.Entry<K,V> {
    int hash;
    K key;
    V value;
    Entry<K,V> next;
    ...
} //end of Entry<K,V>

ここの Entry がプライベートな内部クラスであることは知っていますが、定義済みの静的クラスでもあります。私の懸念は、それをプライベート内部クラスとして定義するだけでは十分ではないということですか? ここで静的クラスとして定義する主な使用法は何ですか?

ガイドや返信は大歓迎です。

4

1 に答える 1

3

そのstaticインスタンスに、外側のクラスの包含インスタンスへの参照が含まれないようにするためです。

Map.Entryマップの要素を反復処理するために使用されます。マップのプライベート フィールドにアクセスする必要がないため、含まれているマップへの参照を持つ必要はありません。したがって、非静的であると宣言すると、余分なスペースが消費され、カプセル化が弱まります。

于 2012-05-24T08:58:04.147 に答える