Heim >Java >javaLernprogramm >Wie kann ich mithilfe von Reflection den generischen Typ einer Java-Liste abrufen?
Bei der Arbeit mit generischen Typen in Java kann es nützlich sein, die spezifische Klasse abzurufen, die einem generischen Typ zugeordnet ist. Betrachten Sie das folgende Beispiel:
List<String> stringList = new ArrayList<String>(); List<Integer> integerList = new ArrayList<Integer>();
In diesem Szenario möchten wir möglicherweise auf die tatsächlichen Klassentypen zugreifen, die diesen Listen zugeordnet sind, nämlich String und Integer. Glücklicherweise bietet Java eine Möglichkeit, diese Informationen mithilfe von Reflection abzurufen.
Durch die Verwendung der getDeclaredField-Methode können wir auf das Feld in einer Klasse zugreifen, die die generische Liste enthält. Von dort können wir den ParameterizedType des Felds abrufen und die tatsächlichen Klasseninformationen extrahieren. Hier ist ein Beispiel:
Field stringListField = testClass.getDeclaredField("stringList"); ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType(); Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
Dieser Code weist die Klasse
Wenn die Listen im Rahmen einer Methode definiert sind, besteht keine Notwendigkeit, ihren generischen Typ abzurufen Typen explizit. Dies liegt daran, dass die Typinformationen im Kontext der Methode leicht verfügbar sind.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection den generischen Typ einer Java-Liste abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!