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需要其父级的KV

相反,DListNodeDblyLinkList<T>的内部类,因此可以访问通用类型T-它实际上也包含对其包含类的引用。

注意,如果将DListNode定义为static class(这就是我的定义方式),它将不再是内部类,因此无法访问其父类的通用参数-因此也需要是DListNode<K,V>

09-27 11:32