【发布时间】:2021-10-06 19:15:49
【问题描述】:
public interface Page<T> {
T nextPage();
}
它的实现
public class ConcretePageA implements Page<TypeA> {
public TypeA nextPage() {
// do stuff
}
}
然后我有一个接口消耗Page
public interface Source {
<T> int getData(Page<T> page)
}
及其实现
public class ConcreteSourceA implements Source {
public int getData(Page<TypeA> page) { //error: getData in ConcreteSourceA clashes with getData in Source
// do stuff
}
}
我试过了,还是不行
public class ConcreteSourceA implements Source {
public <TypeA> getData(Page<TypeA> page) { // error: expect com.foo.TypeA but got TypeA
// do stuff
}
}
当我执行上述操作时,我得到一个编译错误提示
getData in ConcreteSourceA clashes with getData in Source
我知道我做错了什么,但是如何在仍然有多个使用不同类型的实现的同时修复它?
我是不是一开始就做错了?泛型不是解决此问题的正确方法吗?
【问题讨论】: