我有一个java表单,其中我声明了string类型的不同变量,并且很少有类型为string array的变量,很少是集合。 使用反射api的getdeclaredfileds,我得到了我的field数组变量中的每个类的字段。 但我想将字符串变量分成一个公共数组。 将字符串数组到其他数组和集合字段中。
例如: - String abc;
String def;
String[] lmn;
String[] opq;
Collection mno;
答案 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()
按类型过滤它们?