我有一个类,我想找到所有变量和类型数据。
例如
class ex
{
String A,B;
public void method()
{
int a;
double C;
String D;
}
}
所以我想要这样的输出
A : String
B : String
a : int
C : double
D : String
答案 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文件中,因此参数将列为arg0
,arg1
等。要获取真正的参数名称,需要编译源文件,带有javac编译器的-parameters选项。
答案 1 :(得分:0)
检查reflection,您可以在运行时获取类的所有信息
答案 2 :(得分:0)
您可以使用reflection
来获取A
和B
。但是,您无法获得其他local
变量的相同信息。