在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
类型参数过大的原因吗? 最佳答案
在类或接口内部定义的接口是静态的,这意味着它们无权访问其父类的通用参数。因此,Entry
需要其父级的K
和V
。
相反,DListNode
是DblyLinkList<T>
的内部类,因此可以访问通用类型T
-它实际上也包含对其包含类的引用。
注意,如果将DListNode
定义为static class
(这就是我的定义方式),它将不再是内部类,因此无法访问其父类的通用参数-因此也需要是DListNode<K,V>
。