1

add() をオーバーライドしようとしていますが、コンパイルされません

public class AVLTree<E extends Comparable<E>> extends BinaryTree {  
BinaryNode<E> theTree;
    @Override
    public void add (E toInsert)
    {
        if (theTree == null)
    add(toInsert, theTree);     
    }


public class BinaryTree<E extends Comparable<E>> implements Iterable<E> {   
    public void add(E toInsert) { .... }

エラーメッセージ

java:36: エラー: 名前の衝突: AVLTree の add(E#1) と BinaryTree の add(E#2) には同じ消去がありますが、どちらも他の public void add (E toInsert) をオーバーライドしません ^ E#1,E #2 は型変数です。E#1 は、クラス AVLTree で宣言された Comparable を拡張します E#2 は、クラス BinaryTree で宣言された Comparable を拡張します

4

1 に答える 1

4

私のコメントによるBinaryTreeと、によって特殊化されたときに型パラメーターがありませんAVLTree

class BinaryTree<E extends Comparable<E>> implements Iterable<E> {   
    public void add(E toInsert) {
        // ...
    }

    public Iterator<E> iterator() {
        return null;
    }
}

class AVLTree<F extends Comparable<F>> extends BinaryTree<F> {  
    BinaryNode<F> theTree;
    @Override
    public void add (F toInsert)
    {
        // ...     
    }
}

http://ideone.com/dGqd8

于 2012-06-15T03:19:54.353 に答える