使用Javareflection仅获取类的公共方法

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

 Method[] allMethods = c.getDeclaredMethods(); 

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

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

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

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