%Vor%Das Beispiel "WildcardError" erzeugt beim Kompilieren einen Erfassungsfehler:
Nach dieser Fehlerdemonstration beheben sie das Problem mithilfe einer Hilfsmethode:
%Vor% Zuerst sagen sie, dass der Listeneingabeparameter ( i
) als Object
:
In diesem Beispiel verarbeitet der Compiler den Eingabeparameter
i
als vom Typ Objekt.
Warum gibt i.get(0)
nicht Object
zurück? wenn es als solches bereits übergeben wurde?
Außerdem ist es wichtig, <?>
zu verwenden, wenn Sie dann eine Hilfsmethode mit <T>
verwenden müssen. Wäre es nicht besser, direkt T
zu verwenden, woraus geschlossen werden kann?
List<?>
bedeutet Liste von Objekten unbekannten Typs, es ist nicht dasselbe wie List<Object>
.
Weil wir den Typ der Elemente in der Liste nicht kennen, wird das Ergebnis von i.get(0)
von Java als Object
betrachtet, und Sie können Object
nicht zu List<?>
hinzufügen. Für den Fall, dass Ihr Java schlauer sein könnte, aber in komplexeren Code mit <?>
Wildcards, ist es einfach, es nicht sicher zu machen.