2 回答

TA貢獻1801條經(jīng)驗 獲得超16個贊
你面臨的問題其實很簡單?;旧?,您需要了解泛型方法完全獨立于泛型類。
public <T> void setData(T d) {
this.data = d;
}
public <T> void setNext(SinglyLinkedNode<T> n) {
this.next = n;
}
當您<T>在方法的修飾符中放置 a 時,您將使其成為通用方法。你的泛型方法中的類型 T 是不同的,并且覆蓋了整個類的類型 T,這意味著你可以輸入任何類型的對象,該方法將使用它作為其局部 T 值,這可以與全局完全不同類型 T。
<T>從您的方法修飾符中刪除將使它們成為常規(guī)的 setter 方法并默認為類類型 T,它保證與所需的類型匹配。

TA貢獻1757條經(jīng)驗 獲得超8個贊
您不需要在 setter 上使用泛型,因為它將處理與類正在處理的相同類型的數(shù)據(jù)。所以,你的代碼會是這樣的:
public class SinglyLinkedNode<T> {
private T data;
private SinglyLinkedNode<T> next;
SinglyLinkedNode(T d) {
this.data = d;
this.next = null;
}
public void setData(T d) {
this.data = d;
}
//...
public void setNext(SinglyLinkedNode<T> n) {
this.next = n;
}
//...
}
所以現(xiàn)在您可以創(chuàng)建 SinglyLinkedNode 的實例并將值設置為:
public static void main(String[] args) {
SinglyLinkedNode<Integer> integers = new SinglyLinkedNode<>(2);
//
}
另外,我會擺脫 setter,因為我已經(jīng)有一個構(gòu)造函數(shù)來設置值。
添加回答
舉報