在Java中将对象字段值写入System.out的最简洁方法

时间:2013-03-18 03:32:37

标签: java debugging

记录大量字段值的最简洁方法是什么?例如,假设您有6个字段要输出给定行的所有int类型的值。

最明显的解决方案是做这样的事情:

System.out.println("renderMap() xTile: " + xTile + "  yTile: " + yTile + 
    "  maxXTile: " + maxXTile + "  maxYTile: " + maxYTile + "  xPixelOffset: " + 
    xPixelOffset + "  yPixelOffset: " + yPixelOffset);

如果您正在进行大量的更改,并且一直要求您编写上述调试行,那么是否有更简洁且少痛苦的方法在Java中执行此操作?

我接受我上面所做的可能只是最简洁的语法,但对此的确认(或反驳)会很好。

我最终将此作为一种解决方案(比我上面的要求略低,但我会接受它):

System.out.println(String.format("%d %d  %d %d  %d %d", xTile, yTile, 
    maxXTile, maxYTile, xPixelOffset, yPixelOffset));

1 个答案:

答案 0 :(得分:0)

创建一个格式字符串并使用String.format(formatstring,object.value1,object.value2,...)。这并不简单,但它看起来更整洁,因为不是变量和字符串的结构混合在一起,你完全描述你想要的格式,然后完全是你将要放在其中的值。如果您曾在C中使用过printf,那就非​​常相似了。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format(java.util.Locale,java.lang.String,java.lang.Object ...)

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

这不适用于Java(除非你可以使用Reflection做一个技巧?)但是在像Python这样的语言中,所有对象秘密地都有值变量名的哈希映射,你可以迭代这个hashmap并自动构建一个调试所有变量名和值的字符串。