gpt4 book ai didi

java - 通用节点和对象节点有什么区别

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:40 25 4
gpt4 key购买 nike

这是我的 linkedList 类的内部 Node 类。

    private class Node{
private Node next;
private T value;

public Node (T value,Node next){
this.next=next;
this.value=value;
}
}

如果我像这样改变它。

    private class Node<T>{
private Node <T> next;
private T value;

public Node (T value,Node<T> next){
this.next=next;
this.value=value;
}
}

会发生什么情况以及我应该使用哪一个?我认为 Node 始终是一个对象,因此我们不必将它与通用数据类型一起使用。我错过了任何一点吗?

最佳答案

从你的问题中我了解到你的代码看起来像这样

public class LinkedList<T> {
.
.
.

public class Node{
.
.
.
}
}

那你应该去

private class Node{
private Node next;
private T value;

public Node (T value,Node next){
this.next=next;
this.value=value;
}
}

而不是为另一个。原因是当您使用上述版本时,T在这两个类中都指的是对象定义中提供的类型参数,即

LinkedList<String> list; // here String is the type argument for both LinkedList and Node

你可以简单地通过

创建 Node 对象

Node someNode=...

因此在编译时,编译器将确保仅 String 值存储在 Node.value 中。这就是你想要的。

如果您选择其他方法,即 Node<T>那么每当您创建 Node 类型的对象时,您将再次通过编码来输入

Node<T> someNode = new .. // notice the additional type arguments

这会使您的代码变得困惑并违背泛型的主要目标。

关于java - 通用节点和对象节点有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55088310/

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