我是仿制药的新手,这是我的问题:
public class Tree<T> {
public Collection<Tree<T>> getSubTrees(){};
public Tree<T> getTree(T element){}
}
public class DataTree extends Tree<Data>{
public void someMethod(){
DataTree dataTree = this.getTree(root) ;// type mismatch
Collection<DataTree> leafs = this.getSubTrees(); //type mismatch
//following works
Tree<Data> dataTree = this.getTree(root);
Collection<Tree<Data>> leafs = this.getSubTrees();
}
}
你能告诉我为什么会出现这样的错误或者如何正确地投射Tree&lt; Data&gt;到DataTree调用DataTree的具体方法?
答案 0 :(得分:5)
DataTree
为Tree<Data>
,但Tree<Data>
并非总是 DataTree
。
您将返回Tree<T>
,而不是DataTree
。基类不能投入到被驱动的类中。
答案 1 :(得分:-1)
什么是根?它是一个数据元素吗?
尝试输入类型 DataTree dataTree =(DataTree)this.getTree(root)
我认为继承层次结构不支持此功能,但您仍可以尝试。