Heim >Java >javaLernprogramm >Wie kann ich ein Klassenliteral für einen generischen Typ in Java erhalten?
Klassenliterale werden üblicherweise zur statischen Darstellung von Typen verwendet. Beim Umgang mit generischen Typen treten jedoch Schwierigkeiten auf.
Typischerweise können Klassenliterale für nicht generische Typen mithilfe der Syntax Foo.class abgerufen werden. Wenn Sie dies auf generische Typen wie List anwenden, wird aufgrund des Fehlens von Typparametern eine Warnung ausgegeben. Der Versuch, einen Platzhalter (?) hinzuzufügen, um unbekannte Typparameter zuzulassen, führt zu einem Typkonfliktfehler. Darüber hinaus führt die Verwendung der List
Das Problem ist auf die Typlöschfunktion von Java zurückzuführen. Generische Typen werden während der Kompilierung in ihre Rohtypen konvertiert, was bedeutet, dass ihre Typargumente zur Laufzeit verloren gehen. Daher fehlt parametrisierten Typen ihre eigene Laufzeitdarstellung und sie verfügen nicht über entsprechende Klassenobjekte.
Daher ist es unmöglich, ein Klassenliteral für einen parametrisierten Typ wie List
Das obige ist der detaillierte Inhalt vonWie kann ich ein Klassenliteral für einen generischen Typ in Java erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!