Ich habe eine Methode, deren erklärtes Argument ist Subtyp von Number
wie unten angegeben:Wildcard-in-Methode Argument
public static void organizeData(java.util.List<? extends Number> c) {
//operation on the list
}
Ich bin der Lage, alle nicht-parametrisierte Listen als Argument übergeben. Also, was ist der Sinn der Verwendung von Wildcard <? extends Number>
?
List newList = new LinkedList<>();
ClassName.organizeData(newList);
Warum erhalte ich Element vom Typ Object
von c
? Und nicht vom Typ Number
? Gibt es eine Möglichkeit, nur Subtypen eines Typs als Argumente übergeben zu können, anstatt nichtparametrisierte Argumente zuzulassen?
Sie können das nicht verhindern. Ein Benutzer kann immer zuerst auf den Raw-Typ und dann auf das Erforderliche umstellen. Generika haben ihre Grenzen und Raws brechen sie immer. –