public   <A extends Interface1,I extends Interface2> I  Method(A a);


这是界面中的方法。当我重写此接口方法时,可以用实现Interface2的任何类替换I,但是如果参数A是Interface1的子类,则将其拒绝。它只能是Interface1类型。所以当我尝试:

 public   SubTypeofInterface2  Method(Interface1 a); //fine
 public   SubTypeofInterface2  Method(SubTypeofInterface1 a); // not accepted


为什么会这样?

最佳答案

这是因为您的方法需要能够处理Interface1的任何子类型。如果用户想将Interface1的其他子类型传递到您的方法中,该怎么办?该界面告诉用户他们可以,但是您对该界面的实现持不同意见。因此,错误。

10-02 00:29