使用泛型参数的泛型类

时间:2014-07-09 10:27:56

标签: java generics

我想实现以下目标。

我有一个通用类Node<K,T,V>,如下所示:

public class Node<K,T,V>{

/**
 * @return the key
 */
public K getKey() {
    return key;
}
/**
 * @param key the key to set
 */
public void setKey(K key) {
    this.key = key;
}
// etc...

现在我希望有一个类Tree,它可以在具有任意参数化类型的节点上运行:

public class Tree <Node<K,V,T>> {
   public void insert(Node<K,V,T> node){
      K key = node.getKey();
      // do something...
   }
// ... etc...
}

然而,这不起作用,因为Eclipse告诉我public class Tree <Node<K,V,T>>行不好看:)如果我把它改成

public class Tree <Node> {

它告诉我类型Node正在隐藏Node类型。如何从Tree类中实现,我可以正确访问类型K,V和T?

我很确定这个问题已被回答了无数次。但是,我没有找到任何东西 - 很抱歉!

干杯。

1 个答案:

答案 0 :(得分:6)

您可以将树更改为:

class Tree<K, T, V> {
    public void insert(Node<K, T, V> node) {
        K key = node.getKey();
        // do something...
    }
    // ... etc...
}

或者如果你想将它绑定到Node,

class Tree2<N extends Node<K, T, V>, K, T, V> {
    public void insert(N node) {
        K key = node.getKey();
        // do something...
    }
    // ... etc...
}