我正在JDK HashTable中阅读源代码,并且有一些代码片段如下:
/ ** 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是一个私有内部类,但它也是一个定义的静态类; 我担心的是,将它定义为私人内部类是不够的?这里将它定义为静态类的主要用途是什么?
非常感谢任何指南或回复。
答案 0 :(得分:3)
它是static
,因此它的实例不包含对外部类的包含实例的引用。
Map.Entry
用于迭代地图的元素。它不必具有对包含映射的引用,因为它不需要访问映射的私有字段。因此声明它是非静态的只会消耗额外的空间并削弱封装。