2012-10-24 134 views
3

對於java來說,我確實搜索了一些示例,但是我很難過。在Java中使用泛型類和泛型方法很困難

我有使用泛型的節點類:

public class Node<T> { 

    private int key; 
    private T data; 
    private Node<T> nextNode; 

} 

的節點是好的。

public class GenericDictionary implements GenericDictionary_interface { 

    private int capacity; 
    private Node<T> [] slots; 

    public void add (Node<T> newNode) { 

    } 
} 

這就是我將如何寫它,我認爲。我想讓GenericDictionary使用節點對象。

我收到一個錯誤:「T無法解析爲類型」。

事情是我不知道它應該是什麼樣子。

回答

9

GenericDictionary類將需要的通用,以及:

public class GenericDictionary<T> ... 
{ 
} 

在這一點上,它會被罰款的類中使用Node<T>

如果接口包含add方法,接口可能應該是通用的太:

public class GenericDictionary<T> implements Dictionary<T> 
{ 
} 

我建議不要叫GenericDictionary_interface接口,順便......如果有永遠只能將是一個實現,你可以調用接口GenericDictionary和實現GenericDictionaryImpl - 有點可怕,但相當普遍。如果有多個實現,則通過一些區分方面來命名實現。

+0

如何對接口的任何想法? – Kalec

+0

給了我19秒的時間Jon補充了它...... jk – awright18

+0

@Kalec如果接口聲明瞭一個'add(節點節點)'方法,那麼它也需要一般地聲明以創建「變量」T '。另一方面,如果接口在任何地方都沒有提到'T'(或其他一些通用參數),那麼它就不需要改變。 –

3

在你的第二個它沒有被那麼你需要什麼類型T將其添加到該聲明

public class GenericDictionary<T> implements GenericDictionary_interface { 

private int capacity; 
private Node<T> [] slot; 

public void add (Node newNode) { 

} 

}