我试图覆盖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中添加(E#1)并在BinaryTree中添加(E#2)具有相同的擦除,但是都没有覆盖其他 public void add(E toInsert) ^ 其中E#1,E#2是类型变量: E#1扩展了在AVLTree类中声明的Comparable E#2扩展了BinaryTree类中声明的Comparable
答案 0 :(得分: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)
{
// ...
}
}