这是java.util.Map的简化版本
public interface Map {
interface Entry{
int getKey();
}
void clear();
}
我的问题是为什么这样做?
如何实现内部接口?我可以实现内部吗?
答案 0 :(得分:5)
此处Map
也用作命名空间。这是因为Entry
不属于全局范围 - 还有许多其他实体Entries
并且不是必需的Map
条目。这表示Entry
表示与Map
相关的条目。
答案 1 :(得分:5)
我将会......在这里非常理论化......所以请保持开放的心态。单独的Entry
接口会将该概念与其所针对的上下文分离。不要只考虑界面,而是考虑它的实现。例如,Entry
中定义的HashMap
内部静态类:
static class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
final int hash;
(...)
}
此Entry
类不打算在外部使用,它实现的接口表示仅供Map
内部使用的服务合同,特别是因为Map
是一个接口本身,需要一点抽象,让特定的实现定义他们将使用的条目类型。
事实上,我打赌你想知道“当然,但在很多情况下都可以使用一个条目,特别是当你需要一个Key - Value对”时。事实上,这是正确的,但我个人同意当前的设计决定,因为它提供了在一个地方实现Map
所需的一切。