Acceder dinámicamente al valor de un campo dado de un objeto

2010 vistas

Para consultar o modificar un campo dado de un objeto de forma dinámica, tendremos que empezar por recuperar el objeto de tipo Field correspondiente al campo en cuestión. Después haremos una llamada al método correspondiente que tiene como primer parámetro el objeto citado.

Tomemos el siguiente ejemplo: vamos a modificar el contenido del campo definido por la variable nombreCampo del objeto obj dándole el valor de la variable val.



java
  1. void cambiarValor(Object obj, String nombreCampo, Object val) throws Exception
  2. {
  3.   java.lang.reflect.Field f = obj.getClass().getField(nombreCampo);
  4.   f.set(obj,val);
  5. }



Un ejemplo de consulta del valor de un campo dado:



java
  1. void mostrarValor(Object obj, String nombreCampo) throws Exception
  2. {
  3.   Field f = obj.getClass().getField(nombreCampo);
  4.   System.out.println(f.get(obj));
  5. }



Nota: los métodos set y get son métodos generales pero existen equivalentes para los tipos clásicos: setDouble(Object obj, double d) o setBoolean(Object obj, boolean z).