2012-03-05 66 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()按類型進行篩選?