How to get the variables name declared within a method in java

放肆的年华 提交于 2021-02-10 19:40:38

问题


How to get the variables name declared within a method in java class?

for eg:

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)

  }
}

How can i do that?

Thanks in advance..


回答1:


To paraphrase another answer, There's no (simple) way to do this with with reflection.

There is a way to do it. You need a full Java source code parser and name/type resolver ("symbol tables").

The Java compiler offers internal APIs to get at that information. Eclipse JDT offers something similar. Our DMS Software Reengineering Toolkit offers a full parser with this information easily accessible, and considerable additional help to build analyzers and/or code generators that take advantage of this extra information. (You can see this information extracted by DMS in the example Java Source Code Browser at my site, see bio).




回答2:


There is no simple way to do this.

If those were fields, you could get their names using reflection. However, local variable and parameter names are not loaded into the JVM. So you would need to resort to reading the "A.class" file and extracting the debug information for that method. And the bad news is that if the class wasn't compiled with debug information, then even that wouldn't work.

There are libraries around for reading ".class" files for various purposes, but I can't give a specific recommendation.


But the $64,000 question is "But why ...?". What is the point of listing the local variable names for a method from Java? Can't you just look at the source code? Can't you dump the ".class" file with "javap" or decompile it with some 3rd party decompiler?


I thought for big programs it will be useful to understand and analyze it if we can come to know the variables their types and method names and their parameter list etc so only...

I think you just need a decent IDE ...



来源:https://stackoverflow.com/questions/14770200/how-to-get-the-variables-name-declared-within-a-method-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!