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

DataTreeはありTree<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 に答える