簡體   English   中英

通用節點和對象節點有什么區別

[英]What is the difference between generic node and object node

這是我的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

這會使您的代碼混亂,並超出了泛型的主要目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM