1

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)

  }
}

どうやってやるの?

前もって感謝します..

4

2 に答える 2

2

これを行う簡単な方法はありません。

それらがフィールドの場合、リフレクションを使用して名前を取得できます。ただし、ローカル変数とパラメーター名は JVM にロードされません。したがって、「A.class」ファイルを読み取り、そのメソッドのデバッグ情報を抽出する必要があります。悪いニュースは、クラスがデバッグ情報を使用してコンパイルされていない場合、それでさえ機能しないということです。

さまざまな目的で「.class」ファイルを読み取るためのライブラリがありますが、具体的な推奨事項を示すことはできません。


しかし、64,000 ドルの質問は「しかし、なぜ...?」です。Java からメソッドのローカル変数名をリストするポイントは何ですか? ソースコードだけ見れないの?「.class」ファイルを「javap」でダンプしたり、サードパーティの逆コンパイラで逆コンパイルしたりできませんか?


大きなプログラムの場合、変数の型、メソッド名、パラメーターリストなどを知ることができれば、それを理解して分析するのに役立つと思いました...

まともなIDEが必要だと思います...

于 2013-02-08T10:45:43.173 に答える
1

別の答えを言い換えると、リフレクションでこれを行う簡単な方法はありません

それを行う方法があります。完全な Java ソース コード パーサーと名前/型リゾルバー (「シンボル テーブル」) が必要です。

Java コンパイラは、その情報を取得するための内部 API を提供します。Eclipse JDT は同様のものを提供します。当社の DMS Software Reengineering Toolkit は、この情報に簡単にアクセスできる完全なパーサーを提供し、この追加情報を利用するアナライザーやコード ジェネレーターを構築するためのかなりの追加支援を提供します。(DMS によって抽出されたこの情報は、私のサイトのサンプル Java ソース コード ブラウザーで確認できます。バイオを参照してください)。

于 2013-02-08T10:55:44.847 に答える