【问题标题】:Java Overriding ErrorJava 覆盖错误
【发布时间】:2011-06-05 04:23:43
【问题描述】:

我收到以下错误:

名称冲突:AVLTree 中的 add(E) 和 BinaryTree 中的 add(E) 具有相同的擦除,但都不会覆盖另一个

我不知道问题出在哪里。

public class BinaryTree<E extends Comparable<E>> implements Iterable<E> {
    public class AVLTree<E extends Comparable<E>> extends BinaryTree {

两个类中的add方法都写成:

public void add(E toInsert) {

我希望我提供了我需要的一切。我对此感到困惑,所以任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 请正确格式化代码 - 从您的 IDE 剪切并粘贴,然后单击“{}”将其格式化为代码
  • 我认为您的意思是“公共静态类 AVLTree ...”,即您应该在 AVLTree 的定义中添加“静态”。不过,这与名称冲突问题无关

标签: java generics overriding


【解决方案1】:

看起来 AVLTree 是一个内部类,所以参数化类型E 是可见的。试试这个:

public class BinaryTree<E extends Comparable<E>> implements Iterable<E> {
    public class AVLTree extends BinaryTree<E> {

我必须说让内部类扩展其包含类有点奇怪。不可信;我以前从未见过这样做过。

【讨论】:

  • 当我尝试时,我得到:找不到符号符号:类 E 位置:类 AVLTree 我不明白你所说的内部类扩展其包含类的意思
  • 原来我只需要将我的 AVLTree 类修改为: public class AVLTree> extends BinaryTree { 不过感谢您的帮助!
  • 我很确定原始问题的格式具有误导性。让一个内部类扩展它的包含类是pretty dangerous
猜你喜欢
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多