4

クラスの静的フィールドのリストを反復処理する必要があります (たとえば、MyClass)。これらのフィールドはすべて java.util.regex.Pattern 型です。リフレクションを使用すると、次のようにすべての静的フィールドを取得できます。

MyClass mc = new MyClass();
List<Pattern> patternList = new ArrayList<Pattern>();
for (Field f : Commands.class.getDeclaredFields()) {
    if (Modifier.isStatic(f.getModifiers())) {
        // add the Pattern corresponding to the field f to the list patternList
    }
}

ここで、すべてのフィールドfが java.util.regex.Pattern 型であることがわかっているので、それらすべてを含む を作成したいと思いList<Pattern>ます。どうやってやるの?

SOにはリフレクションに関するいくつかの質問がありますが、私に一致する質問は見つかりませんでした。私の質問が重複していることをお詫び申し上げます。

4

1 に答える 1

3

これはどう?

patternList.add((Pattern)f.get(null));

(質問の言い回しに関しては、フィールドfは type ですが、 typeFieldを持つターゲットがありPatternます。)

参照: http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html

于 2013-03-16T21:26:57.930 に答える