Continuando con nuestro tutorial de reflection, anteriormente vimos Constructores en el Api reflect, hoy vamos a ver como obtener los campos / field.
Contiene los siguientes métodos:
Bueno empecemos a ver en código un ejemplo de Api Reflection como acceder y modificar campos / fields.
Supongamos que tenemos la clase Persona:
En nuestro caso utilizaremos el llamado de la clase no instanciada, ahora obtengamos los campos de dicha clase.
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.
Ejemplo completo:
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:
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() );
}
Mas adelante continuaremos con mas del Api Reflect. Saludos!
Java Reflection - Campos / Fields
Reviewed by El lado oscuro de java
on
febrero 22, 2016
Rating:
No hay comentarios: