这是java.util.Map的简化版本
public interface Map {
interface Entry{
int getKey();
}
void clear();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么这样做?
如何实现内部接口?我可以实现内部吗?
我将会......在这里非常理论化......所以请保持开放的心态.一个单独的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;
(...)
}
Run Code Online (Sandbox Code Playgroud)
这个Entry类不打算在外面使用,它实现的接口代表一个服务契约,仅供Maps中的内部使用,特别是因为它Map是一个接口本身,需要一点抽象,让特定的实现定义条目的类型他们会用.
事实上,我敢打赌你在想"当然,但在许多情况下都可以使用一个条目,特别是当你需要一个Key - Value对"时.事实上,这是正确的,但我个人同意当前的设计决定,因为它提供了Map在一个地方实现一切所需的一切.