Heim >Java >javaLernprogramm >Wie kann ich ein Klassenliteral für einen generischen Typ in Java erhalten?

Wie kann ich ein Klassenliteral für einen generischen Typ in Java erhalten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-23 22:27:151040Durchsuche

How Can I Get a Class Literal for a Generic Type in Java?

Erhalten eines Klassenliterals aus einem generischen Typ in Java

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.class-Syntax zu einem Syntaxfehler.

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 zu erhalten. mit Methoden wie List.class. Dies liegt daran, dass Java bei der Kompilierung generische Typinformationen eliminiert und nur die Rohtypdarstellung übrig bleibt.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn