Prima di leggere aiutaci ad offrirti contenuti sempre di qualità
Seguici sui Social Network!

In quest’articolo vedremo come usare la Java Reflection per effettuare operazioni sugli attributi di una classe.

javalogo

Tutto questo avviene tramite la classe java.lang.reflect.Field Java. Nello specifico in quest’articolo tratteremo le seguenti operazioni:

  • Ottenere gli attributi di una classe
  • Ottenere il nome di un attributo
  • Ottenere il tipo di un attributo
  • Get/set di un attributo

 

OTTENERE GLI ATTRIBUTI DI UNA CLASSE

Per ottenere gli attributi di una classe si parte recuperando la classe dell’oggetto ad esempio facendo un MyClass.class dove MyClass è la nostra classe di cui vogliamo ottenere gli attributi:

L’array Field[] avrà tanti istanze Field per ogni attributo pubblico dichiarato nella classe.

Se si conosce il nome dell’attributo ad esempio “myField” si può accedere ad esso in questo modo:

L’esempio riportato sopra restituirà un’istanza Field corrispondente all’attributo myField come dichiarato nella class MyClass in basso:

Se passiamo un nome non presente fra gli attributi di classe, il metodo getField() solleverà una eccezione di tipo NoSuchFieldException.

OTTENERE il nome di un attributo

Una volta ottenuta l’istanza Field si può recuperare il suo nome tramite il metodo getName(), come in basso:

OTTENERE IL tipo DI UN ATTRIBUTO

Possiamo determinare il tipo dell’attributo (String, int etc.) usando il metodo getType():

Get/set di un attributo

Una volta ottenuta l’istanza Field si può facilmente effettuare get/set dei suoi valori in questo modo:

Il parametro objectInstance passato ai metodi get e set deve essere una istanza della classe in esame. Nell’esempio superiore è usata un’istanza della classe MyClass e l’attributo myField è un attributo della stessa.