Java-Reflection - Erste Wert des verschachtelten Objekts, list und array-Objekt
Ich bin neu auf Reflexion und versuchen, um eine verallgemeinerte Funktion, die in Objekt und analysieren Sie alle Felder, die den Typ String
, String[]
oder List<String>
. Alle String
, String[]
oder List<String>
ist, dass in verschachtelten Objekt hat auch analysiert werden. Gibt es eine utility die die mir helfen können damit? Um die Werte aus dem parent-Objekt (User
) war einfach - verwendet BeanUtils.describe(user);
- es gibt die String
Werte im übergeordneten Objekt aber nicht String[]
, List<String>
und verschachtelte Objekt. Ich bin mir sicher ich wäre nicht der erste, der braucht diese Funktion? Gibt es irgendwelche Programme oder code, der mir helfen konnte erreichen, dies zu tun?
public class User {
private String somevalue;
private String[] thisArray;
private List<String> thisList;
private UserDefinedObject myObject;
.
.
.
}
- "Ich bin mir sicher ich wäre nicht der erste, der braucht diese Funktion?" ... Und ich bin sicher, ich bin nicht die erste person zu Fragen, ob Sie wirklich brauchen Sie diese Funktion. 'Cos so oft Menschen verwenden Sie reflektion, Dinge zu tun, die sollte gemacht werden nicht reflektiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode
- Klasse.getDeclaredFields
erhalten Sie ein array vonField
s was jedes Feld der Klasse. Sie könnten die Schleife über diese und überprüfen Sie den Typ zurückgegeben- Feld.getType
. Filtern von Feldern vom TypList
zuList<String>
ist komplizierter - siehe dieser Beitrag für helfen mit, dass.Nach der ersten dynamischen lookup-Felder, die Sie wollen, sollten Sie verfolgen (memoize) die relevanten
Field
Objekte für eine bessere Leistung.Hier ein kurzes Beispiel:
Beachten Sie, dass ich verwendete Referenz Gleichheit (
==
) stattisAssignableFrom
passendString.class
undString[].class
seitString
istfinal
.Edit: Gerade bemerkt Ihr etwas über die Suche nach geschachtelten
UserDefinedObject
s. Konnte Sie Rekursion, um die oben genannten Strategie, um zu suchen für diejenigen.