Получение разных типов переменных - PullRequest
0 голосов
/ 05 марта 2012

У меня есть Java-форма, в которой я объявил разные переменные типа string, и несколько переменных типа string array и немногие являются коллекциями.Используя getdeclaredfileds отражения api, я получаю каждое поле класса в моей переменной массива полей.Но я хочу разделить строковые переменные в один общий массив.строки массива в другой массив и поля коллекции в другой.

например: - String abc; String def; String[] lmn; String[] opq; Collection mno;

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Определите служебный метод:

public static Map<Class<?>, List<Field>> getFieldsByType(Field[] fields) {
  Map<Class<?>, List<Field>> result = new HashMap<Class<?>, List<Field>>();
  for (Field field:fields) {
    List<Field> fieldList = result.get(field.getType());
    if (fieldList == null) {
      fieldList = new ArrayList<Field>();
      result.put(field.getType(), fieldList);
    }
    fieldList.add(field);
  }
  return result;
}

Он разделяет поля по типу и сохраняет их на карте.

Пример использования:

Map<Class<?>, List<Field>> map = getFieldsByType(MyClass.class.getDeclaredFields());
List<Field> stringTypeMembers = map.get(String.class);

Сейчас stringTypeMember содержит все члены класса (поля) типа String.

1 голос
/ 05 марта 2012

Разве вы не можете просто получить все переменные и отфильтровать их по типу, используя Field.getType()?

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