我正在尝试使用反射来获取在类中显式声明的所有公共(public)方法(因此 c.getMethods()
将不起作用,因为它也获取父类(super class)方法)。我可以使用
Method[] allMethods = c.getDeclaredMethods();
仅从该类中获取方法,但我只想使用公共(public)方法。
此时,我正在尝试获取修饰符并基于此执行某些操作,但由于某种原因,调试器中显示的修饰符值与输出的修饰符值不一样。例如,我有一个私有(private) getNode
方法,虽然“修饰符”值在调试器中显示为 2
,但它输出为 "1"
当我执行 System.out.println(c.getModifiers())
时。诡异的。有没有另一种方法可以获得公共(public)方法,或者我错过了一些明显的东西?感谢您的帮助!
最佳答案
不知道你是怎么用的Modifier
, 但这是它的使用方式
Method[] allMethods = Test.class.getDeclaredMethods();
for (Method method : allMethods) {
if (Modifier.isPublic(method.getModifiers())) {
System.out.println(method);
// use the method
}
}
关于java - 使用 Java 反射仅获取类的公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366327/