Sconti Amazon fino al 60

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:

Class aClass = MyClass.class
Field[] fields = aClass.getFields();

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:

Class aClass = MyClass.class
Field field = aClass.getField("myField");

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

public class MyClass {
   public String myField = null; 
}

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:

Field field = aClass.getField("myField");
String fieldName = field.getName();

OTTENERE IL tipo DI UN ATTRIBUTO

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

Field field = aClass.getField("myField");
Object fieldType = field.getType();

Get/set di un attributo

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

Class aClass = MyClass.class
Field field = aClass.getField("myField");
MyClass objectInstance = new MyClass();
field.set(objetInstance, "some string"); // set
String value = field.get(objectInstance); // get

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.

Lascia una risposta

Please enter your comment!
Please enter your name here