Java如何打印所有局部变量?

Java如何打印所有局部变量?,java,local-variables,Java,Local Variables,我有一个方法,希望在不进行调试的情况下检查其中的变量——在Java中可能吗 我不想编写大量代码,如: System.out.println("a: " + a); 我想说的是: System.out.printLocals(); System.out.printMembersOf(someObjectInstance); 此外,拥有以下内容也应该很好: System.out.printLocals(); System.out.printMembersOf(someObjectInstan

我有一个方法,希望在不进行调试的情况下检查其中的变量——在Java中可能吗

我不想编写大量代码,如:

System.out.println("a: " + a);
我想说的是:

System.out.printLocals();
System.out.printMembersOf(someObjectInstance);
此外,拥有以下内容也应该很好:

System.out.printLocals();
System.out.printMembersOf(someObjectInstance);

你说的“检查”是什么意思?尝试System.out.println(yourvariable)或(yourvariable.toString()),如果它是对象。它将在控制台中显示。

您可以使用
System.out.println
打印变量。例如:

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

您可以编写一个带有varargs参数的方法,只需编写:

dump(variable1, variable2, variable3, variable4, ...);
这并不理想,但在某些情况下已经足够了。但是,无法自动从方法中获取所有局部变量并将其转储

你可以考虑一些字节码操作(例如,可以)。但这会很难看。

  • 只需将它们打印到调试器。()

  • 打印到控制台:(
    System.out.println(“var”)

  • 用户:

在运行时读取局部变量的值并不简单,即使您是调试器。如果类中没有调试符号,即使使用调试器,也无法查看局部变量

查看值的最简单的解决方案是使用
System.out.println()或使用日志()打印它们

如果希望在运行时对局部变量进行示例而不更改代码,可以尝试(面向方面编程)。或者,您也可以使用它来检查正在运行的VM

我想要像这样的东西:
System.out.printLocals()

还有一点应该很好,比如:
System.out.printMembersOf(someObjectInstance)

几乎每个Java类都有一个
toString
方法。重写该方法,就可以得到一个表示所需内容的字符串


EclipseHelios和其他IDE将为您生成一个基本的
toString
方法

这不适用于以下情况:
public void foo(int k,字符串s){System.out.printLocals();}
//预期输出与
System.out.ptintln(“k:+Integer.toString(k))相同;System.out.ptintln(“s:+s”)@denys:你说得对。但是,没有理由不能为每个需要局部变量的方法编写toLocalString方法。所有成员都被要求在:,让我们只为局部变量编写。在
jdb
上有
locals
。BCEL-hmm,是吗?我宁愿使用dump(ar1,ar2m,…)