我在尝试使用泛型时遇到了一个问题,真的无法解决。请看下面的代码:
class Operation<R> {
}
class P<O extends Operation<R>, R> {
}
class MyResource {
}
class MyO extends Operation<MyResource> {
}
class MyP extends P<MyO, MyResource> {
}
abstract class A<R> {
abstract P<Operation<R>, R> doIt();
}
class B extends A<MyResource> {
@Override
MyP doIt() {
/*
the compiler is complaining about the above line:
The return type is incompatible with A<MyResource>.doIt()
*/
return null;
}
}
基本上,
MyP
是 P<MyO, MyResource>
的子类,后者又是 P<Operation<MyResource>, MyResource>
的子类。换句话说,我们在 B.doIt
返回一个 A.doIt
返回类型的子类。但是,编译器报错了。你能帮助我理解这个吗? 谢谢。