java - 使用 Java 反射仅获取类的公共(public)方法

标签 java reflection

我正在尝试使用反射来获取在类中显式声明的所有公共(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/

相关文章:

java - 通过摘要进行全文搜索

java - 方法可以在不声明的情况下抛出 java.lang.Exception 吗?

Java:实例化抽象类的特定子类的方法

c# - 检索具有指定类型的字段的值

java - 如果参数注解存在则获取参数值

.net - 如何在十六进制汇编文件中找到方法?

java - 如何跟踪抛出异常的文件?

java - 提高 Jpa 图像加载时间的性能

java - Glassfish 3.1.2 不包含 javax.persistence jar

c# - 有没有办法从另一个的构造函数中获取父对象(托管对象)?