java - 是否可以使用反射从 Java 类中检索所有成员,包括私有(private)成员?

标签 java reflection

例如,我希望能够写作

Method[] getMethods(Class<?> c)

这会和现有的做同样的事情

Class.getMethods()

但也包括私有(private)和 protected 方法。我有什么想法可以做到这一点吗?

最佳答案

public Method[] getMethods(Class<?> c) {
    List<Method> methods = new ArrayList<Method>();
    while (c != Object.class) {
        methods.addAll(Arrays.asList(c.getDeclaredMethods()));
        c = c.getSuperclass();
    }

    return methods.toArray(new Method[methods.size()]);
}

解释:

  • getDeclaredMethods返回由特定类声明的所有方法,但不返回其父类(super class)
  • c.getSuperclass()返回给定类的直接父类(super class)
  • 因此,递归层次结构,直到Object,您获得所有方法
  • 如果你想包含Object的方法,那么让条件为while (c != null)

关于java - 是否可以使用反射从 Java 类中检索所有成员,包括私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176478/

相关文章:

java - Libgdx 不同设备的缩放坐标

java - quartz 失火指令

具有自定义事件参数的 C# 反射程序化事件处理程序

java - HAPI HL7 验证抛出异常

java - 使用 FlatFileItemReader xML 的 Spring Batch 空文件

java - 比较器和一致等于 : How?(最佳实践)

c# - 我如何反射(reflect)动态对象的成员?

perl - 发现 Perl 模块所有子例程的最佳方法是什么?

javascript - javascript对象的成员可以完全迭代吗?

ruby - 如何在 Ruby 中查找类的每个实例