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
你能描述为什么一种方法比另一种方法更受欢迎,什么时候应该使用它?