在多个类中使用相同的通配符类型
问题描述:
我想要做这样的事情:在多个类中使用相同的通配符类型
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. 我错过了什么,如何在树和节点中使用相同的泛型类型?
答
如果树<>和节点<>类是独立的,则“A是不一定相同的事情。如果你正在编写Tree和Node。我想里面树巢节点:
class Tree<A extends Ability> {
static class Node {
A method() {
A a = null;
return a;
}
}
}
这样你限制“A”一次,“A”节点和树指的是同一类型。
答
试试这个:Node<A> node = searchForTheNode(...);
不幸的是,这是行不通的。错误是:“不能访问'package.Tree'中的'A'” – thalador 2011-05-18 17:46:48
好吧,如果内部类不是静态的,似乎工作! – thalador 2011-05-18 17:47:49