2012-03-05 14 views
0

私は型の異なる変数を宣言したjava形式を持っています。文字列配列型の変数はほとんどなく、コレクションはほとんどありません。 リフレクションAPIのgetdeclaredfiledsを使用して、私はフィールド配列変数のクラスのすべてのフィールドを取得しています。 しかし、私は文字列変数を1つの共通配列に分割したいと思います。 配列を他の配列に配列し、コレクションフィールドを他の配列に配列します。さまざまな変数の型を取得する

例えば: - 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

+0

@ Andreas_D..thanks – rcky

1

は、あなただけのすべての変数を取得し、Field.getType()を使ってタイプ別にフィルタリングすることができませんか?

関連する問題