我是泛型的新手,这是我的问题:
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 转换为 DataTree 以调用 DataTree 特定的方法吗?
最佳答案
DataTree
是 Tree<Data>
但 Tree<Data>
并不总是 DataTree
。
您正在返回 Tree<T>
,而不是 DataTree
。基类不能转换为派生类。
关于java - java中子类调用泛型方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12214866/