2013-04-25 104 views
4

我有一個通用的鏈接類(實現一個鏈表),如下圖所示:的Java:繼承泛型類並設置其類型

class Link<T> { 
    protected T next; 

    public T getNext() { return next; } 
    public void setNext(T newnext) { next = newnext; } 

} // end class Link 

現在,我要叫卡另一個類,從這個繼承。

class Card extends Link { 
... 
} 

但是,我希望它爲getNext()返回一個Card對象。我該怎麼做呢?

最初,Link類不是通用的,但是每當我想使用它時,我都必須對getNext()進行強制轉換。我有一個看似相關的空指針問題,所以我想澄清這一點。

+0

下面的解決方案效果很好。當我接近它時,空指針問題可能會出現在另一個問題:)。 – 2013-04-25 22:22:54

回答

11

您可以指定泛型參數類型LinkCardCard

class Card extends Link<Card> 

這從Link分配Card的泛型類型參數T

+0

謝謝,就是這樣。我很難將這種奇怪的泛型與繼承結合起來。很棒。 – 2013-04-25 22:19:04