Java Reflection - Campos / Fields

Continuando con nuestro tutorial de reflection, anteriormente vimos Constructores en el Api reflect, hoy vamos a ver como obtener los campos / field.

Java Reflection - Campos / Fields

Bueno con reflection podemos acceder a los campos / field de una clase. Vamos a utilizar la clase Field que obviamente se encuentra contenida en el package java.lang.reflect.

Contiene los siguientes métodos:
  • equals(Object obj): Compara el tipo de clase Field contra un objeto especifico.
  • get(Object obj): Retorna el valor de los campos representados, en el objeto especifico.
  • getAnnotation(Class<T> annotationClass): Retorna las anotaciones que poseen los elementos para un tipo especifico si una anotacion esta presenta, de otra manera retorna null.
  • getBoolean(Object obj): Obtener el valor de un campo booleano estático o instancia.
  • getByte(Object obj): Obtener el valor de un campo byte estático o instancia.
  • getChar(Object obj): Obtiene el valor de un tipo de campo char estático o instancia, o otro tipo primitivo convertible al tipo char via una conversión amplia.
  • getDeclaredAnnotations(): Retorna todas las anotaciones que son directamente presentadas en este elemento.
  • getDeclaringClass(): Retorna el objecto Class presentado por las class o la interface que son declarados en el campo representado por el tipo de objeto Field.
  • getDouble(Object obj):Obtiene el valor de un tipo de campo double estático o instancia, o otro tipo primitivo convertible al tipo double via una conversión amplia.
  • getFloat(Object obj): Obtiene el valor de un tipo de campo float estático o instancia, o otro tipo primitivo convertible al tipo float via una conversión amplia.
  • getGenericType(): Retorna un tipo de objeto que es representado por los tipos declarados de los campos, representados por el objeto Field.
  • getInt(Object obj): Obtiene el valor de un tipo de campo int estático o instancia, o otro tipo primitivo convertible al tipo int via una conversión amplia.
  • getLong(Object obj): Obtiene el valor de un tipo de campo long estático o instancia, o otro tipo primitivo convertible al tipo long via una conversión amplia.
  • getModifiers(): Retorna los modificadores del lenguaje Java para los campos representados por el objeto campo, como un Integer.
  • getName(): Retorna el nombre del campo presentando como un objeto Field.
  • getShort(Object obj): Obtiene el valor de un tipo de campo short estático o instancia, o otro tipo primitivo convertible al tipo short via una conversión amplia.
  • getType(): Retorna un objeto del tipo Class que identifica los tipos declarados para el campo representado por un objeto Field.
  • hashCode(): Retorna un hashcode para este campo.
  • isEnumConstant(): Retorna verdadero si el campo presentado es un elemento de un tipo enumerado, si no retorna falso.
  • isSynthetic(): Retorna verdadero si el campo es un sintético, en otro caso retorna falso.
  • set(Object obj, Object value): Setea los campos representados por el objeto Field en un representado argumento de un objeto para el nuevo valor especificado.
  • setBoolean(Object obj, boolean z): Setea el valor de un campo como un boolean, en el objeto especifico.
  • setByte(Object obj, byte b): Setea el valor de un campo como un byte, en el objeto especifico.
  • setChar(Object obj, char c): Setea el valor de un campo como un char, en el objeto especifico.
  • setDouble(Object obj, double d): Setea el valor de un campo como un double, en el objeto especifico.
  • setFloat(Object obj, float f): Setea el valor de un campo como un float, en el objeto especifico.
  • setInt(Object obj, int i): Setea el valor de un campo como un int, en el objeto especifico.
  • setLong(Object obj, long l): Setea el valor de un campo como un long, en el objeto especifico.
  • setShort(Object obj, short s): Setea el valor de un campo como un short, en el objeto especifico.
  • toGenericString(): Retorna un String describiendo el constructor, incluyendo el tipo de parámetros.
  • toString(): Retorna un String describiendo el Constructor.

Bueno empecemos a ver en código un ejemplo de Api Reflection como acceder y modificar campos / fields.


Supongamos que tenemos la clase Persona:


Java Reflection - Campos / Fields



Utilizaremos la clase Field del packages java.lang.reflect. 


Bueno primero obtengamos la clase, como vimos anteriormente (clic acá!)

Class clase;
clase = Class.forName("ar.com.nico.Persona");

En nuestro caso utilizaremos el llamado de la clase no instanciada, ahora obtengamos los campos de dicha clase.

Field[] useField = clase.getFields();
Tenemos que tener en cuenta que traeremos los campos / fields que son públicos.
Pregunta, pero por que es un Array? es decir por que es Field[]?, la respuesta es obvia por que nos puede devolver mas de un campo.

Finalmente recorremos y mostramos por pantalla los fields.

Field campos;
for (int i=0; i < useField.length; i++) {
campos = useField[i];
System.out.println("\n\t" + campos.getName() );
}


Ejemplo completo:

Java Reflection - Campos / Fields

Mas adelante continuaremos con mas del Api Reflect. Saludos!
Java Reflection - Campos / Fields Java Reflection  - Campos / Fields Reviewed by El lado oscuro de java on febrero 22, 2016 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.