Wie kann ich in Java RAW-Typen vermeiden, wenn ich getClass für eine Instanz eines generischen Typs aufrufe?

Angenommen, ich habe dies in Java:

List<String> list = new ArrayList<String>();
list.getClass();

Der Typ des letzten Ausdrucks istClass<? extends List>. Ich verstehe, warum es wegen der Löschung nicht sein kannClass<? extends List<String>>. Aber warum kann es nicht seinClass<? extends List<?>>?

Kann ich beidem nicht ausweichen?ungeprüfte Warnungen undRohtyp-Warnungen Wenn ich das Ergebnis dieses Ausdrucks einer Variablen zuweisen möchte, die irgendwie die Information beibehält, dass es sich bei dieser Klasse tatsächlich um eine Art von handeltList?

Class<? extends List> listClass = list.getClass(); // raw type warning
Class<? extends List<?>> listClass = (Class<? extends List<?>>) list.getClass(); // unchecked cast warning

Antworten auf die Frage(2)

Ihre Antwort auf die Frage