在多个类中使用相同的通配符类型

时间:2011-05-17 21:21:12

标签: java generics

我想做这样的事情:

public class Tree<A extends Ability>{
   ...
}

在树中我想使用从Ability继承的对象。树由节点组成,其具有作为有效载荷的能力:

public class Node<A extends Ability>{
    public A getAbility(){ ... }
    ...
}

如果我尝试在树的方法中使用A,比如说搜索,我会收到错误:

public void read(){
    Node node = searchForTheNode(...);
    node.getAbility(); // <- this gives me an error
}

错误说,不兼容的类型:java.lang.Object和A. 我缺少什么,如何在树和节点中使用相同的通用类型?

2 个答案:

答案 0 :(得分:1)

如果树&lt;&gt;和节点&lt;&gt;类是分开的然后'A'不一定是同一个东西。如果您正在编写树和节点。我会在Tree中嵌入Node:

class Tree<A extends Ability> {

    static class Node {
        A method() {
            A a = null;
            return a;
        }
    }
}

这样你就可以约束'A'一次,而节点和树引用的'A'是相同的类型。

答案 1 :(得分:0)

试试这个:Node<A> node = searchForTheNode(...);