gpt4 book ai didi

java - 为什么在 Entry 中需要键入参数

转载 作者:搜寻专家 更新时间:2023-11-01 02:06:13 27 4
gpt4 key购买 nike

java.util.Map (如下图),类型参数<K, V>Entry覆盖阴影类型参数 <K, V>Map .

interface Map<K,V> {
......
interface Entry<K,V> {
.....
}
}

class DblyLinkList来自 here有以下内部类 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 类型参数的原因吗? ?

最佳答案

在类或接口(interface)内部定义的接口(interface)是静态的,这意味着它们无权访问其父类的通用参数。所以Entry需要 KV来自其 parent 。

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

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

关于java - 为什么在 Entry<K,V> 中需要键入参数 <K,V>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32366669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com