我刚刚遇到了一个与 Java 泛型相关的有趣问题。我想使用具体定义(DerivedPaginator)而不是“通用”定义(Paginator<Derived>)。为此,我必须更改 PaginatorTest 中定义的方法。我尝试了不同的组合,但我仍然不知道该怎么做。
你能帮我解决这个难题吗?
interface Base {
}
interface Derived extends Base {
}
interface Paginator<T extends Base> {
}
interface DerivedPaginator extends Paginator<Derived> {
}
interface PaginatorTest<T extends Base> {
// how to define this method so that it would accept DerivedPaginator?
void check(Paginator<T> it);
// nice try, but no cigar
//<Y extends Paginator<T>> void check(Y it);
}
interface DerivedPaginatorTest extends PaginatorTest<Derived> {
// this works fine
//@Override
//void check(Paginator<Derived> it);
// but this doesn't
@Override
void check(DerivedPaginator it);
}