Da Sie eine Iten auf einer Liste von Typ mit oberen Schranken hinzufügen können nicht! Sie könnten eine Liste oder Liste haben, in der die anderen nicht für Änderungsoperationen passen!
List<? extends Number> list = new ArrayList<Integer>();
List<? extends Number> list = new ArrayList<Double>();
List<? extends Number> list = new ArrayList<Long>();
In diesem Fall könnte die Variablenliste einen beliebigen Typ in der Instanz haben, der Number erweitert. So können Sie es zum Beispiel in Ihrer Methode weitergeben. Aber da könntest du jetzt nicht wirklich was Typ sein könnte. Du könntest eine ArrayList haben und dazu sagen, dass du ein neues Double hinzufügst. In der Kompilierzeit macht das Sinn, denn Double erweitert Number, aber in Runtime könnte die Liste nicht von diesem Typ sein und eine Exception werfen.
Denken Sie daran, dass, wenn Sie die oberen Grenzen verwenden, <? extends T>
Sie kippe die Liste ändern, lesen Sie es einfach! Es ist die Oracle tutorial (siehe Wildcards Kapitel Inhalt - Ober Bounded Wildcards, Lower Bounded Wildcards etc.)
TypeErasure .... –