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

时间:2015-03-24 10:40:50

标签: 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

3 个答案:

答案 0 :(得分:2)

您可以使用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选项。

答案 1 :(得分:0)

检查reflection,您可以在运行时获取类的所有信息

答案 2 :(得分:0)

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