这是 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 所需的一切。