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

how to get all variable and type data in class and method using java

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

例如

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,你可以得到class运行时的所有信息

您可以使用 reflection 来获得 AB 是肯定的。但是您无法获得其他 local 变量的相同信息。

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

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());
}

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

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

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