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 回答