web-dev-qa-db-ja.com

Javaすべてのローカル変数を出力する方法は?

メソッドがあり、デバッグせずにメソッド内の変数を確認したいのですが、Javaで可能ですか?

次のようなコードを大量に記述したくありません。

System.out.println("a: " + a);

私は次のようなものにしたいです:

System.out.printLocals();

また、次のようなものがあると便利です。

System.out.printMembersOf(someObjectInstance);
8
denys

次のようなものが欲しい:System.out.printLocals();

また、System.out.printMembersOf(someObjectInstance);のようなものがあると便利です。

ほぼすべてのJavaクラスにはtoStringメソッドがあります。このメソッドをオーバーライドすると、要求しているものを表す文字列を取得できます。

Eclipse Heliosは、他のIDEの中でも、基本的なtoStringメソッドを生成します。

3

ええと、varargsパラメータを使用してメソッドを記述し、次のように記述できます。

dump(variable1, variable2, variable3, variable4, ...);

理想的ではありませんが、状況によってはそれで十分です。メソッドからすべてのローカル変数を自動的に取得してそれらをダンプする方法はありません。

あなたはそれを行うことができるある種のバイトコード操作(例えば [〜#〜] bcel [〜#〜] を使って)を検討するかもしれません...しかしそれはかなり醜いでしょう。

3
Jon Skeet

System.out.printlnを使用して変数を出力できます。例:

int i = 42;
System.out.println("i:" + i);
1
dogbane

OR

  • コンソールに出力します:(System.out.println("var")

OR

1
gideon

「調べる」とはどういう意味ですか? System.out.println(yourvariable)、またはオブジェクトの場合は(yourvariable.toString())を試してください。コンソールに表示されます。

0
Raveline

たとえデバッガであっても、実行時にローカル変数の値を読み取るのは簡単ではありません。クラスにデバッグシンボルがない場合、デバッガーを使用しても、ローカル変数を表示する方法はまったくありません。

値を確認する最も簡単な解決策は、System.out.println()を使用して値を出力するか、ロギング( slf4j )を使用することです。

コードを変更せずに実行時にローカル変数を例にしたい場合は、 [〜#〜] aop [〜#〜] (アスペクト指向プログラミング)を試すことができます。または、同じ デバッガが使用するAPI を使用して、実行中のVMを調べることができます。

0
Aaron Digulla