Как отражательно перебрать поле Array? - PullRequest
6 голосов
/ 31 мая 2010

у меня

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

1 Ответ

7 голосов
/ 31 мая 2010

Вы бы использовали что-то вроде этого:

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

Другими словами, вы сначала выбираете значение из поля, используя Field.get, а затем используете вспомогательный класс java.lang.reflect.Array для доступа к длине и отдельным элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...