如何在java中获取方法中声明的变量名称



如何获取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提取的这些信息,请参阅个人简介)。

相关内容

  • 没有找到相关文章

最新更新