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的其他子类型传递到您的方法中,该怎么办?该界面告诉用户他们可以,但是您对该界面的实现持不同意见。因此,错误。