Code:
public static void main(String [] s)
{
List<Number> numberList = new ArrayList<Number>();
List<? extends Number> obenBesch = numberList;
List<? super Number> untenBesch = numberList;
obenBesch.add(new Integer(3)); //Geht nicht, wieso?
untenBesch.add(new Integer(3)); //Geht, wieso ?
}
<? extends Number> sagt doch aus, das mein Typ ein Datentyp sein muss der von Number erbt? (also extended). Wieso kann ich dann kein Integer einfügen? da dies doch ein ein Datentyp ist, der von Number geerbt hat?
wenn ich <? super Number> benutze sage ich, dass mein Datentyp Number als seine direkte Oberklasse haben muss.
Wieso ist jetzt die super-Variante ausreichend um ein integer hinzuzufügen und die extends-Variante nicht?