2011-05-17 192 views
0

我想要做这样的事情:在多个类中使用相同的通配符类型

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

在树中我要使用从能力继承的对象。该树由节点,有作为有效载荷的能力:如果我尝试使用在树的方法

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

,说搜索,我得到一个错误:

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

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

回答

1

如果树<>和节点<>类是独立的,则“A是不一定相同的事情。如果你正在编写Tree和Node。我想里面树巢节点:

class Tree<A extends Ability> { 

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

这样你限制“A”一次,“A”节点和树指的是同一类型。

+0

不幸的是,这是行不通的。错误是:“不能访问'package.Tree'中的'A'” – thalador 2011-05-18 17:46:48

+0

好吧,如果内部类不是静态的,似乎工作! – thalador 2011-05-18 17:47:49

0

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