public Field[] getFields() throws SecurityException
Gibt ein Array zurück, das Feldobjekte enthält, die alle zugänglichen öffentlichen Felder der Klasse oder Schnittstelle widerspiegeln, die von diesem Klassenobjekt dargestellt werden. Die zurückgegebenen Elemente im Array sind nicht sortiert und befinden sich nicht in einer bestimmten Reihenfolge. Diese Methode gibt ein Array der Länge 0 zurück, wenn die Klasse oder Schnittstelle keine zugänglichen öffentlichen Felder hat oder wenn es eine Array-Klasse, einen primitiven Typ oder eine Leere darstellt.
Wenn dieses Class-Objekt eine Klasse darstellt, gibt diese Methode die öffentlichen Felder dieser Klasse und aller ihrer Oberklassen zurück. Wenn dieses Class-Objekt eine Schnittstelle darstellt, gibt diese Methode die Felder dieser Schnittstelle und aller ihrer Superschnittstellen zurück.
Das implizite Längenfeld für die Array-Klasse wird von dieser Methode nicht berücksichtigt. Benutzercode sollte die Methoden der Klasse Array verwenden, um Arrays zu bearbeiten.
public Field[] getDeclaredFields() throws SecurityException
Gibt ein Array von Feldobjekten zurück, die alle Felder widerspiegeln, die von der Klasse oder Schnittstelle deklariert wurden, die von diesem Klassenobjekt dargestellt wird. Dies umfasst öffentliche, geschützte, Standardzugriffe (Paketzugriffe) und private Felder, schließt jedoch geerbte Felder aus. Die zurückgegebenen Elemente im Array sind nicht sortiert und befinden sich nicht in einer bestimmten Reihenfolge. Diese Methode gibt ein Array der Länge 0 zurück, wenn die Klasse oder Schnittstelle keine Felder deklariert oder wenn dieses Class-Objekt einen primitiven Typ, eine Array-Klasse oder void darstellt.
Und was ist, wenn ich alle Felder aus allen übergeordneten Klassen benötige? Es wird Code benötigt, z. B. von https://stackoverflow.com/a/35103361/755804 :
public static List<Field> getAllModelFields(Class aClass) {
List<Field> fields = new ArrayList<>();
do {
Collections.addAll(fields, aClass.getDeclaredFields());
aClass = aClass.getSuperclass();
} while (aClass != null);
return fields;
}
getField
kann ein Feld von einer Oberklasse erben,getDeclaredField
kann es aber nicht.getDeclaredField
Beschränken Sie sich auf die Klasse, für die Sie die Funktion aufrufen.