如何获取在java类中的方法中声明的变量名?
例如:
public class A {
String x;
public void xyz(){
int i;
String z = null;
//some code here
}
Method[] methods = A.class.getDeclaredMethods();
for (Method q = methods){
//some code here to get the variables declared inside method (i.e q)
}
}
我该怎么做?
提前致谢..
答案 0 :(得分:2)
没有简单的方法可以做到这一点。
如果这些是字段,您可以使用反射获取其名称。但是,本地变量和参数名称不会加载到JVM中。因此,您需要求助于读取“A.class”文件并提取该方法的调试信息。坏消息是,如果没有使用调试信息编译类,那么即使这样也行不通。
为了各种目的,有些库可以读取“.class”文件,但我不能给出具体的推荐。
但64,000美元的问题是“但为什么......?”。从Java列出方法的局部变量名称有什么意义?你能不能看一下源代码?你不能用“javap”转储“.class”文件或用一些第三方反编译器反编译它吗?
我认为对于大型程序,如果我们能够了解变量的类型和方法名称及其参数列表等,那么理解和分析它将是有用的。
我认为你只需要一个体面的IDE ......
答案 1 :(得分:1)
用另一个答案来解释,使用反射没有(简单)的方法。
有办法做到这一点。您需要一个完整的Java源代码解析器和名称/类型解析器(“符号表”)。
Java编译器提供内部API来获取该信息。 Eclipse JDT提供类似的东西。我们的DMS软件再造工具包提供了一个完整的解析器,可以轻松访问这些信息,并为构建利用这些额外信息的分析器和/或代码生成器提供了大量额外帮助。 (您可以在我的站点的示例Java源代码浏览器中看到DMS提取的这些信息,请参阅bio)。