Hi Leute, ich wollte euch fragen, wieso es bei <? extends T> der schreibende Zugriff außer (null) nicht geht und bei <? super T> es funktioniert.
static void f ( List<? extends Lebensmittel> l) {
Essen essen = new Essen () ;
Ware ware = new Ware () ;
Lebensmittel lebensmittel = new Lebensmittel () ;
// schreibender Zugriff --> warum klappt das hier nicht ?
l. add ( essen ) ; // Compile - Fehler
l. add ( ware ); // Compile - Fehler
l. add ( lebensmittel ) ; // Compile - Fehler
l. add ( null ); // OK
// lesender Zugriff Lebensmittel lebensmittel2 = l. get (0) ; // OK
Ware ware2 = l . get (0) ; // OK
Object object = l. get (0) ; // OK
static void f ( List<? extends Lebensmittel> l) {
Essen essen = new Essen () ;
Ware ware = new Ware () ;
Lebensmittel lebensmittel = new Lebensmittel () ;
// schreibender Zugriff --> warum klappt das hier nicht ?
l. add ( essen ) ; // Compile - Fehler
l. add ( ware ); // Compile - Fehler
l. add ( lebensmittel ) ; // Compile - Fehler
l. add ( null ); // OK
// lesender Zugriff Lebensmittel lebensmittel2 = l. get (0) ; // OK
Ware ware2 = l . get (0) ; // OK
Object object = l. get (0) ; // OK