【发布时间】:2013-06-02 01:38:39
【问题描述】:
类 subA 是类 A 的子类。我试图重写一个方法,但不知何故它不允许我重写它。这是为什么?是因为参数中的参数吗?
错误信息读取:
名称冲突:subA 中的 add(E#1) 和 A 中的 add(E#2) 具有相同的擦除,但都不会覆盖另一个 其中 E#1,E#2 是类型变量:
E#1 扩展在 subA 类中声明的对象
E#2 扩展类 A 中声明的 Object
超类A:
public class A <E> {
public void add(E toInsert) {...}
}
子类 subA:
public class subA <E> extends A {
//overrides the method from A class
public void add (E toInsert) <-- doesn't let me overrides
{...}
}
【问题讨论】:
-
像
public class subA<E> extends A<E>一样继承时需要给A提供类型参数 -
@TI:这看起来像是一个答案,而不是评论。
-
TI 的评论就是您需要知道的全部内容。但是,将来,您应该发布编译器报告的确切错误消息,而不是“它不允许我”。
-
@TI:请快点,因为我们得到了一堆糟糕的答案。
-
@HovercraftFullOfEels - TI 为时已晚。 Bohemian 搞砸了模式并发布了正确答案。
标签: java generics overriding