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

Java 在多个类中使用相同的通配符类型,java,generics,Java,Generics,我想这样做: public class Tree<A extends Ability>{ ... } 公共类树{ ... } 在树中,我想使用从能力继承的对象。该树由节点组成,这些节点作为有效负载具有以下能力: public class Node<A extends Ability>{ public A getAbility(){ ... } ... } 公共类节点{ public A getAbility(){…} ... } 如果我尝试在

我想这样做:

public class Tree<A extends Ability>{
   ...
}
公共类树{
...
}
在树中,我想使用从能力继承的对象。该树由节点组成,这些节点作为有效负载具有以下能力:

public class Node<A extends Ability>{
    public A getAbility(){ ... }
    ...
}
公共类节点{
public A getAbility(){…}
...
}
如果我尝试在树的某个方法中使用,例如搜索,我会得到一个错误:

public void read(){
    Node node = searchForTheNode(...);
    node.getAbility(); // <- this gives me an error
}
public void read(){
Node Node=searchForTheNode(…);
node.getAbility();//试试这个:
node node=searchForTheNode(…);
如果树和节点类是分开的,那么“A”不一定是同一件事。如果您正在编写树和节点。我会将节点嵌套在树中:

class Tree<A extends Ability> {

    static class Node {
        A method() {
            A a = null;
            return a;
        }
    }
}
类树{
静态类节点{
A方法(){
A=零;
返回a;
}
}
}

通过这种方式,您可以约束一次“A”,而节点和树引用的“A”是相同的类型。

不幸的是,这不起作用。错误是:“无法访问“package.Tree”中的“A”