gpt4 book ai didi

java - Java 中带有内部节点和迭代器的自定义通用 LinkedList : Type Confusion

转载 作者:行者123 更新时间:2023-12-01 12:17:20 25 4
gpt4 key购买 nike

我以为我已经掌握了泛型的窍门,直到我遇到 this (带有内部 Node 和 Iterator 类的通用 LinkedList 的基本实现。下面粘贴了链接的代码的剪辑版本)。

问:为什么我们有 LinkedListIterator而不是LinkedListIterator<AnyType>

答:参见答案 here

好吧。说得通。但后来,

问:为什么我们有 Node<AnyType>而不是Node ?由于Node类也在LinkedList范围内,从最后一个答案来看,我预计 Node 的定义中也不会 require 。

public class LinkedList<AnyType> implements Iterable<AnyType>
{
private Node<AnyType> head;

//...

private static class Node<AnyType>
{
private AnyType data;
private Node<AnyType> next;

public Node(AnyType data, Node<AnyType> next)
{
this.data = data;
this.next = next;
}
}

public Iterator<AnyType> iterator()
{
return new LinkedListIterator();
}

private class LinkedListIterator implements Iterator<AnyType>
{
private Node<AnyType> nextNode;

public LinkedListIterator()
{
nextNode = head;
}
//...

最佳答案

答案是由于类的泛型类型参数的范围。它适用于每个非static 成员,包括内部类,但不包括static 嵌套类。

因此,LinkedListAnyType 类型参数位于内部类 LinkedListIterator 的范围内,并且不必声明它。此外,AnyType 不在 static 嵌套类 Node 的范围内,因此它需要有自己的类型参数(它没有命名相同)。

关于java - Java 中带有内部节点和迭代器的自定义通用 LinkedList : Type Confusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918737/

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