gpt4 book ai didi

java - 链接列表泛型java

转载 作者:行者123 更新时间:2023-12-03 18:39:56 26 4
gpt4 key购买 nike

所以我刚开始学习 java 泛型,我的老师给了我们这段代码

public class LinkedList<T> {
class Node<T>{
T info;
Node<T> next;
}

Node<T> head = new Node<T>();
/*
and here are supposed to be all the methods like add,remove... that use Class Node
*/

}

所以问题是在这条线上

class Node<T>{

Eclipse 位于 <T>给我“类型参数 T 隐藏类型 T”警告所以我删除了它并使用了

public class LinkedList<T> {
class Node{
T info;
Node next;
}

Node head = new Node();
/*
and here are supposed to be all the methods like add,remove... that use Class Node
*/

}

我现在没有收到任何警告,但这让我想知道代码是否做同样的事情?如果不是,那有什么区别?有人可以向我解释差异或指出正确的方向吗?非常感谢。

最佳答案

这与拥有一个与成员变量同名的局部变量,或者子类中的成员变量与父类(super class)中的成员变量同名非常相似:这样做是合法的,只是混淆了哪个T你指的是。

您实际上不需要 Node 上的类型变量:

public class LinkedList<T> {
class Node {}
}

因为 NodeLinkedList<T> 的内部类, 它可以使用 T在父类上定义。这就是您想要的:列表的节点应该是与包含 List 相关的类型(例如,您不会在 Node<Integer> 中包含 LinkedList<String>)。

你可以制作Node静态:

public class LinkedList<T> {
static class Node<T> {}
}

抛开泛型,这很好,因为它意味着你的每个 Node实例未包含对 LinkedList 的引用- 你几乎肯定不需要它。

现在它们是独立的类型变量。但要注意这里,现在很困惑 T你的意思是。您可以通过调用其他类型变量来使其更清晰 - 例如 S .那么你不能混淆 LinkedList 上的类型与 Node 上的类型.

关于java - 链接列表泛型java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855461/

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