我想做这样的事情:
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. 我缺少什么,如何在树和节点中使用相同的通用类型?
答案 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(...);