如何获取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)
}
}
我该怎么做?
提前谢谢。。
没有简单的方法可以做到这一点。
如果这些是字段,您可以使用反射来获取它们的名称。但是,本地变量和参数名称不会加载到JVM中。因此,您需要读取"A.class"文件并提取该方法的调试信息。坏消息是,如果类没有使用调试信息进行编译,那么即使这样也不起作用。
周围有一些图书馆可以出于各种目的阅读".class"文件,但我不能给出具体的建议。
但64000美元的问题是"但为什么…?"。列出Java方法的局部变量名有什么意义?你就不能看看源代码吗?你不能用"javap"转储".class"文件吗?或者用第三方反编译器反编译它吗?
我认为对于大程序来说,如果我们能够了解变量的类型、方法名称和参数列表等,那么理解和分析它将是有用的,所以。。。
我认为你只需要一个像样的IDE。。。
套用另一个答案,没有简单的方法可以通过反射来做到这一点。
有一种方法可以做到这一点。您需要一个完整的Java源代码解析器和名称/类型解析器("符号表")。
Java编译器提供了内部API来获取这些信息。Eclipse JDT提供了类似的功能。我们的DMS软件重组工具包提供了一个完整的解析器,可以轻松访问这些信息,并为构建利用这些额外信息的分析器和/或代码生成器提供了相当大的额外帮助。(您可以在我的网站上的Java源代码浏览器示例中看到DMS提取的这些信息,请参阅个人简介)。