我正在阅读我的教科书,偶然发现了这段代码:
public abstract class AbstractMap<K,V> implements Map<K,V> {
public boolean isEmpty() { return size() == 0; }
//---------------- nested MapEntry class ---------------
protected static class MapEntry<K,V> implements Entry<K,V> {
private K k; // key
private V v; // value
public MapEntry(K key, V value) {
k = key;
v = value;
}
// public methods of the Entry interface
public K getKey() { return k; }
public V getValue() { return v; }
// utilities not exposed as part of the Entry interface
protected void setKey(K key) { k = key; }
protected V setValue(V value) {
V old = v;
v = value;
return old;
}
}
//----------- end of nested MapEntry class ----------
我一直试图解决这个问题。我似乎无法理解为什么嵌套类如此重要。是不是可以省略那个嵌套类,只是将所有这些方法放在AbstractMap类中?它是出于安全目的(如链接列表和节点?)
请随时告诉我这个问题是不是正确的地方,因为代码不是我的代码,而是我的教科书中的代码。
答案 0 :(得分:2)
实施Map
时需要实施的方法之一是
public Set<Map.Entry<K,V>> entrySet();
由于返回类型为Set<Map.Entry<K,V>>
,因此您需要为Entry<K,V>
提供Map
的实施。通常的做法是将Entry
实现为Map
的内部类,它是Entry
。
鉴于Entry
可以独立使用Map
作为其基础,您需要在Entry
类上使用这些方法。