Java泛型名称clash,具有相同的擦除
问题内容:
我有超一流的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);
}