我是泛型的新手,这是我的问题:

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 特定的方法吗?

最佳答案

DataTreeTree<Data>Tree<Data> 并不总是 DataTree

您正在返回 Tree<T> ,而不是 DataTree 。基类不能转换为派生类。

关于java - java中子类调用泛型方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12214866/

10-12 01:14