2010-05-31 12 views
6

tengo¿Cómo iterar sobre un campo Array de forma reflexiva?

Class<? extends Object> class1 = obj.getClass(); 
    Field[] fields = class1.getDeclaredFields(); 
    for (Field aField : fields) { 
     aField.setAccessible(true); 
     if (aField.getType().isArray()) { 
      for (?? vals : aField) { 
      System.out.println(vals); 
      } 
     } 
     } 

Respuesta

6

que tendría que utilizar algo como esto:

if (aField.getType().isArray()) { 
    Object array = aField.get(obj); 
    int length = Array.getLength(array); 
    for (int i = 0; i < length; i++) { 
    System.out.println(Array.get(array, i)); 
    } 
} 

En otras palabras, de hacer salir primero el valor del campo utilizando Field.get, a continuación, utilizar la clase java.lang.reflect.Array ayudante para acceder a la longitud y los elementos individuales.

Cuestiones relacionadas