这是 java.util.Map 的简化版本
public interface Map {
interface Entry{
int getKey();
}
void clear();
}
我的问题是为什么这样做?
内部接口应该如何实现?我可以只实现内部的吗?
这是 java.util.Map 的简化版本
public interface Map {
interface Entry{
int getKey();
}
void clear();
}
我的问题是为什么这样做?
内部接口应该如何实现?我可以只实现内部的吗?
这里Map
也用作命名空间。这是因为Entry
不属于全局范围 - 还有许多其他实体是Entries
且不是必需Map
的条目。这表示Entry
表示与 相关的条目Map
。
我将在这里...非常理论...所以请保持开放的心态。一个单独的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
它本身就是一个接口,需要一点抽象来让特定的实现定义条目的类型他们会使用。
确实,我敢打赌你想知道“当然,但是一个条目可以在很多情况下使用,特别是当你需要一个键值对时”。事实上,这是真的,但我个人同意当前的设计决策,因为它提供了Map
在一个地方实现 a 所需的一切。