public Field[] getFields() throws SecurityException
Restituisce un array contenente oggetti Field che riflettono tutti i campi pubblici accessibili della classe o dell'interfaccia rappresentati da questo oggetto Class. Gli elementi nell'array restituiti non vengono ordinati e non sono in alcun ordine particolare. Questo metodo restituisce una matrice di lunghezza 0 se la classe o l'interfaccia non ha campi pubblici accessibili o se rappresenta una classe di matrice, un tipo primitivo o nulla.
In particolare, se questo oggetto Class rappresenta una classe, questo metodo restituisce i campi pubblici di questa classe e di tutte le sue superclassi. Se questo oggetto Class rappresenta un'interfaccia, questo metodo restituisce i campi di questa interfaccia e di tutte le sue superfacce.
Il campo di lunghezza implicita per la classe di array non si riflette in questo metodo. Il codice utente deve utilizzare i metodi della classe Array per manipolare le matrici.
public Field[] getDeclaredFields() throws SecurityException
Restituisce una matrice di oggetti Field che riflette tutti i campi dichiarati dalla classe o dall'interfaccia rappresentata da questo oggetto Class. Ciò include l'accesso pubblico, protetto, predefinito (pacchetto) e privato , ma esclude i campi ereditati . Gli elementi nell'array restituiti non vengono ordinati e non sono in alcun ordine particolare. Questo metodo restituisce un array di lunghezza 0 se la classe o l'interfaccia non dichiara campi o se questo oggetto Class rappresenta un tipo primitivo, una classe di array o un vuoto.
E se avessi bisogno di tutti i campi di tutte le classi genitore? È necessario un po 'di codice, ad es. Da 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
può ottenere un campo ereditato da una superclasse magetDeclaredField
non può.getDeclaredField
limitarsi alla classe su cui si chiama la funzione.