我有一個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