通用类使用泛型参数

4
我希望实现以下目标。
我有一个通用类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?

我非常确定这个问题已经回答了无数次。 但是,我没有找到任何东西 - 对此感到抱歉!!!

干杯。


3
欢迎来到SO。不要因为一个好问题而道歉;-) - Christian St.
谢谢@ChristianSt.!还有@Shail016,感谢你们提供的解决方案。我选择了第二个解决方案。虽然不如我最初尝试的那么顺畅,但它能够正常工作! - Filex
1个回答

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...
}

1
我本来想写第二个,但是速度太慢了,你做得很好 :) 不过最好保持<K,V,T>参数顺序。 - EpicPandaForce
1
感谢您编辑了由操作定义的Node<K,T,V>的顺序。 - Shailesh Aswal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接