2012-10-24 129 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) { 

} 

}