M的构造函数< X,Y>期望得到一个X和一个Y,但你试图给它一个IA< X,Y>并且IB< X,Y>.必要的关系是相反的; X是IA< X,Y>,但反之亦然,并且类似于Y. 以下编译,但似乎不足以满足您的要求:
class A, Y extends IB> implements IA{}
class B, Y extends IB> implements IB{}
interface IA, Y extends IB> {}
interface IB, Y extends IB> {}
class M, Y extends IB> extends W{
public M(IA x, IB y){} // this is the only change
}
class W, Y extends IB> {}
//To my check class code:
public , Y extends IB> void check() {
IA a = new A();
IB b = new B();
W s = new M(a,b);
}