Javaジェネリックに関する興味深い問題が発生しました。私は "generified"定義(Paginator <Derived>)ではなく、具体的な定義(DerivedPaginator)を使いたいと思います。そのためには、PaginatorTestで定義されているメソッドを変更する必要があります。私はさまざまな組み合わせを試しましたが、私はまだそれを行う方法がわかりません。引数が "generified"クラスを継承するメソッドをオーバーライド
このパズルを解いて私を助けてください。
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);
}
はい。これは基本的に回避策です。 –