在java.util.Map
中(如下所示),<K, V>
的类型参数Entry
超过<K, V>
的阴影类型参数Map
。
interface Map<K,V> {
......
interface Entry<K,V> {
.....
}
}
来自here的 class DblyLinkList
具有以下内部类DListNode
,不需要覆盖类型参数T
。
public class DblyLinkList<T> implements Iterable<T> {
.......
class DListNode {
private T item;
private DListNode prev;
private DListNode next;
DListNode(T item, DListNode p, DListNode n) {
this.item = item;
this.prev = p;
this.next = n;
}
}
......
}
您能否帮我理解为Map
?
答案 0 :(得分:6)
在类或接口内定义的接口是静态的,这意味着它们无法访问其父类的泛型参数。因此Entry
需要来自其父级的K
和V
。
相比之下,DListNode
是DblyLinkList<T>
的内部类,因此可以访问泛型类型T
- 它实际上也包含一个返回其包含类的引用。
注意,如果DListNode
被定义为static class
(我将如何定义它),它将不再是内部类,因此无法访问其父项通用参数 - 以及所以也需要DListNode<K,V>
。