我有一个java窗体,其中我已经声明了不同类型的字符串变量,而少数几个变量的类型是字符串数组,而且很少是变量集合。 使用反射api的getdeclaredfileds,我得到我的字段数组变量中的每个类的字段。 但我想分开字符串变量到一个共同的数组。 将数组字符串转换为另一个数组和集合字段。获取不同类型的变量
如: - String abc; String def; String[] lmn; String[] opq; Collection mno;
我有一个java窗体,其中我已经声明了不同类型的字符串变量,而少数几个变量的类型是字符串数组,而且很少是变量集合。 使用反射api的getdeclaredfileds,我得到我的字段数组变量中的每个类的字段。 但我想分开字符串变量到一个共同的数组。 将数组字符串转换为另一个数组和集合字段。获取不同类型的变量
如: - String abc; String def; String[] lmn; String[] opq; Collection mno;
定义一个实用方法:
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
类型(字段)。
你就不能得到所有的变量和使用Field.getType()
按类型进行筛选?
@Andreas_D .....感谢您的帮助。你能帮我使用这个函数吗?我在问题 – rcky 2012-03-05 11:15:26
@ Andreas_D ..中提供了示例变量 – rcky 2012-03-05 14:19:03