4

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

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<Data> 转换为 DataTree 以调用 DataTree 特定的方法吗?

4

2 回答 2

5

DataTreeTree<Data>Tree<Data> 并非总是如此 DataTree

你回来了Tree<T>,不是DataTree。基类不能转换为派生类。

于 2012-08-31T11:57:55.510 回答
-1

什么是根???它是数据元素吗?

尝试类型转换
DataTree dataTree = (DataTree)this.getTree(root)

好吧,我认为继承层次结构不会支持这一点,但您仍然可以尝试。

于 2012-08-31T11:59:50.687 回答