编辑:我很想阅读对史蒂夫·里德(Steve Reed)的AOP方法的 react 。鼓励评论他的答案!
我是一个新手,有时我意识到在程序执行过程中了解变量的内容会有所帮助。所以我开始这样做:
编辑:解决了这个问题。过去是:var +“:” + var,这是完全错误的。愚蠢的错字。
System.err.println ( "var: " + var );
后来我知道这是很普遍的做法。至少在调试器不可用或不需要的地方。
我使用基本的文本编辑器,每次需要调试变量时都要键入print语句,这很烦人,所以我想,为什么不这样:
void dbug ( Object obj )
{
String variableName = obj.somehowGetVariableName();
String variableContents = obj.toString();
System.out.println ( variableName +": " + variableContents );
}
但是,显然获得变量名称说起来容易做起来难。
java-reflection-how-to-get-the-name-of-a-variable
我是否坚持:
System.err.println ( "var: " + var );
还是有一个流行的速记版本?
最佳答案
我不会尝试围绕打印出调试信息编写任何奇特的方法。如果使用记录器,则坚持使用LOG.debug(...)
,否则使用System.err.println(...)
。
您可能希望使用String.format("var=%s val=%s", "VarName", val)
而不是String串联。
确保在每个类中重写toString
方法以提供有意义的调试信息。
在一天结束时,通常更容易启动调试器并查看发生了什么,而不必跟踪已记录的调试行的负载。
我唯一使用您的调试方法的时间是,如果我的应用程序维护了映射内的所有状态,那么我可以轻松地打印出键值对(例如Web应用程序中的 session 映射)。