2010-05-31 3 views
6

Ich habeWie wiederhole ich über ein Array-Feld reflektiv?

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); 
      } 
     } 
     } 

Antwort

6

Sie so etwas wie dieses verwenden würde:

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)); 
    } 
} 

Mit anderen Worten: Sie zunächst den Wert aus dem Feld holen Field.get verwenden, dann verwenden Sie die java.lang.reflect.Array Helfer Klasse die für den Zugriff auf Länge und die einzelnen Elemente.

Verwandte Themen