获得不同类型的变量

时间:2012-03-05 10:49:17

标签: java java-ee

我有一个java表单,其中我声明了string类型的不同变量,并且很少有类型为string array的变量,很少是集合。 使用反射api的getdeclaredfileds,我得到了我的field数组变量中的每个类的字段。 但我想将字符串变量分成一个公共数组。 将字符串数组到其他数组和集合字段中。

例如: - String abc; String def; String[] lmn; String[] opq; Collection mno;

2 个答案:

答案 0 :(得分:2)

定义实用方法:

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 :(得分:1)

您是否只能获取所有变量并使用Field.getType()按类型过滤它们?