2016-06-11 127 views
2

我正在使用泛型,我遇到了一個問題。 所以我有一個Node class其中有一個type parameter<T>可擴展可比較。使用類作爲可能包含也可能不包含其他類型參數的類型參數

public class Node<T extends Comparable<T>> implements Comparable<Node<T>> { 

    private T info; 
    private Node next; 
    private Node previous; 

} 

現在,我已經設計了另一類說Priority Queue class其中也包含了相當的類型參數。

public class PriorityQueue<Item extends Comparable<Item>> 
implements Iterable<Item> { 

.... 

} 

但是當我嘗試在我的優先級隊列類使用Node類的類型是這樣的:

private MaxPriorityQueue<Node> maxPriorityQueue; 

它給了我一個錯誤說,Type parameter Node is not defined within bounds, should implement java.lang.comparable

我想我在概念上是錯誤的在執行這個。 什麼應該是正確的方法?

有沒有一種方法可以改變Priority Queue類,以便它可以採用任何實現可比接口(不管A是否包含類型參數)作爲類型參數的類(比如A)。

+0

什麼是DLLNode? –

+0

請發表問題的[mcve]。 – Tunaki

+0

@SleimanJneidi:對不起,我編輯了這個問題。 – poorvankBhatia

回答

1

如果我正確理解您的要求,您需要強制您的PriorityQueue接受爲自己實現可比接口的對象。在這種情況下,你只需要:

class PriorityQueue<Item extends Comparable<Item>> { 

,最終,如果你想爲你的節點的有效載荷類型參數:

class Node<T> implements Comparable<Node<T>> { 

,這樣就可以做到這一點:

private PriorityQueue<Node<Integer>> maxPriorityQueue; 

喜歡這裏:https://ideone.com/GBnHp7(?)(看看評論以及)

1

你可以做到完全你有什麼即你只需要指定類型Node<T>當你宣佈你的隊列中,這樣的事情:

private PriorityQueue<Node<String>> queue; 

祝你好運!

相關問題