java - 如何使用java获取类和方法中的所有变量和类型数据

标签 java reflection

我有一个类,我想查找所有变量和类型数据。

例如

class ex
{
    String A,B;
    public void method()
    {
        int a;
        double C;
        String D;
    }
}

所以我想要这样的输出

A : String
B : String
a : int
C : double
D : String

最佳答案

您可以使用 Reflection API 中的方法 Class.getDeclaredMethods()Class.getDeclaredFields() 来列出类方法和属性。

for (Method m : ExampleClass.class.getDeclaredMethods()) {
    System.out.println(m.getName() + ": " + m.getGenericReturnType());
}

for (Field f : ExampleClass.class.getDeclaredFields()) {
    System.out.println(f.getName() + ": " + f.getType());
}

但无法正常访问局部变量信息。在 Java 8 中,您可以使用方法 Method.getParameters() 访问方法参数。所以你可以这样做:

for (Method m : ExampleClass.class.getDeclaredMethods()) {
    for (Parameter p : m.getParameters()) {
        System.out.println(p.getName() + ": " + p.getType());
    }
}

默认情况下,参数名称不会存储在 .class 文件中,因此参数将列出为 arg0arg1 等。获取真实参数使用 javac 编译器的 -parameters 选项编译源文件所需的名称。

关于java - 如何使用java获取类和方法中的所有变量和类型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230442/

相关文章:

java - 嵌套的 Java 枚举定义 - 声明为静态有什么不同吗?

c# - 在请求上使用反射使w3wp.exe进程崩溃

c# - 访问自定义属性中的声明类?

java - 如何使 SimpleDateFormat.parse() 失败?

java - 无法反序列化 POJO 类的 HTTP 响应。抛出 START_ARRAY token

java - 有没有办法在 Android Studio 中获取给定项目的 Activity 流程图?

java - 提供相对路径,以便当我在任何计算机上运行 jar 文件时声音都可以工作

c# - 从外部程序集动态加载类型

java - 如何正确使用反射访问 Telephony Manager 中的隐藏方法

.net - C#。检查 Type 是否为 .NET Framework,而不是我自己的类型