在Java中,如何将类型化列表中的所有静态字段作为其类的对象(而不是Field实例)?

时间:2013-03-16 21:23:55

标签: java reflection

我需要迭代一个类的静态字段列表(比如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>。我怎么能这样做?

我没有发现任何与我相符的问题,尽管有关于反思的问题有几个问题。如果我的问题是重复,我道歉。

1 个答案:

答案 0 :(得分:3)

这个怎么样?

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

(关于您的问题的措辞,字段f的类型为Field,但其目标的类型为Pattern。)

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