2012-03-05 61 views
0

我有一个java窗体,其中我已经声明了不同类型的字符串变量,而少数几个变量的类型是字符串数组,而且很少是变量集合。 使用反射api的getdeclaredfileds,我得到我的字段数组变量中的每个类的字段。 但我想分开字符串变量到一个共同的数组。 将数组字符串转换为另一个数组和集合字段。获取不同类型的变量

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

回答

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类型(字段)。

+0

@Andreas_D .....感谢您的帮助。你能帮我使用这个函数吗?我在问题 – rcky 2012-03-05 11:15:26

+0

@ Andreas_D ..中提供了示例变量 – rcky 2012-03-05 14:19:03

1

你就不能得到所有的变量和使用Field.getType()按类型进行筛选?