使用Java反射仅获取类的公共方法

时间:2013-12-04 03:38:27

标签: java reflection

我正在尝试使用反射来获取在类中显式声明的所有公共方法(因此c.getMethods()将无效,因为它也会抓取超类方法)。我可以用

Method[] allMethods = c.getDeclaredMethods();

从该类中获取方法,但我只想使用公共方法。

此时,我正在尝试抓取修改器并基于此执行某些操作,但由于某种原因,调试器中显示的修饰符值和修改器值输出不同。例如,我有一个私有getNode方法,虽然“修饰符”值在调试器中显示为2,但当我执行"1"时,它会输出为System.out.println(c.getModifiers())。奇怪的。有另一种方法可以获得公共方法,还是我错过了一些明显的东西?谢谢你的帮助!

1 个答案:

答案 0 :(得分:42)

我不知道你是如何使用Modifier的,但这里的意思是如何使用

Method[] allMethods = Test.class.getDeclaredMethods();
for (Method method : allMethods) {
    if (Modifier.isPublic(method.getModifiers())) {
        System.out.println(method);
        // use the method
    }
}