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

2022-09-01 15:16:19

我试图使用反射来获取类中显式声明的所有公共方法(因此不起作用,因为它也捕获超类方法)。我可以使用c.getMethods()

Method[] allMethods = c.getDeclaredMethods();

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

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


答案 1

我不知道你是如何使用Modinifer的,但这就是它的使用方式

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

答案 2