我有超一流的Foo。还有一个扩展它的类Bar。

public class Bar extends Foo

在Foo中的功能:
protected void saveAll(Collection<?> many)

酒吧功能:
public void saveAll(Collection<MyClass> stuff) {
   super.saveAll(stuff);
}

出现错误:
 Name clash: The method saveAll(Collection<MyClass>) of type Bar has the same erasure as saveAll(Collection<?>) of type Foo but does not override it.

我究竟做错了什么?

最佳答案

您正在使用不兼容的类型覆盖saveAll方法。也许您想做类似的事情:

public class Bar extends Foo<MyClass>
Foo<E>中的功能
protected void saveAll(Collection<E> many)

和功能在酒吧:
public void saveAll(Collection<MyClass> stuff) {
   super.saveAll(stuff);
}

09-09 22:46