Java如何打印所有局部变量?
我有一个方法,希望在不进行调试的情况下检查其中的变量——在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
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,…)