仮定する
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
あるアプローチが別のアプローチよりも好まれる理由と、それをいつ使用すべきかを説明してください。