在java.util.Map中(如下所示),输入参数< K,V>条目是阴影类型参数< K,V>地图.
interface Map {
......
interface Entry {
.....
}
}
来自here的类DblyLinkList具有以下内部类DListNode,其不需要遮蔽类型参数T.
public class DblyLinkList implements Iterable {
.......
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;
}
}
......
}
你能帮我理解为地图的类型参数蒙上阴影的原因吗?
解决方法:
在类或接口内定义的接口是静态的,这意味着它们无法访问其父类的泛型参数.因此,Entry需要来自其父级的K和V.
相反,DListNode是DblyLinkList< T>的内部类.因此可以访问泛型类型T – 它实际上也包含一个返回其包含类的引用.
注意,如果DListNode被定义为静态类(我将如何定义它),它将不再是内部类,因此无法访问其父类通用参数 – 因此需要DListNode< K,V> ;太.
标签:java,generics
来源: https://codeday.me/bug/20190528/1169248.html