这是一个非常不完善的标题...我可以手动覆盖继承的方法吗?
public class A extends AbstractList
{
public boolean addAll(int index, Collection<E> what){}
}
但是Eclipse给我的编译错误
Name clash: The method addAll(int, Collection<E>) of type DynamicArray<E> has the same
erasure as addAll(int, Collection<? extends E>) of type AbstractList<E> but does not
override it
我明白与擦除的问题是什么,但我不明白为什么没有按addAll(int, Collection<E>)
'重写它与之相冲突的继承方法(如果两者都在同一个类中定义,我可以看到它,但问题是:“当方法与继承方法具有相同的擦除时,我们覆盖继承的方法。一个有相同的擦除,所以它不会工作“)。
有没有办法强制编译器用DynamicList.addAll(int, Collection<E>)
覆盖AbstractList.addAll(int, Collection<? extends E>)
?
这是我所能理解它(这些规则相当神秘),抱怨是你的函数定义有效地阻止了对原始函数的访问,但它不会接受(编译时没有类型冲突)所有对原文的合法调用。 –