[英]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.