认为
A extends X
您需要对对象 A 执行一些操作。执行操作的方法可能是:
public void doMagic(List<? extends X> e)
或者,您可以选择调用它
public void doMagic2(List<X> e)
您要求通过以下方式完成魔术:
List<X> listOfA = new ArrayList<X>();
listOfA.add(new A());
C c = new C();
c.doMagic(listOfA); // works as expected
c.doMagic2(listOfA); // works as expected
你能描述一下为什么一种方法比另一种更受欢迎,什么时候应该使用它?