Java:打印出一个对象进行调试

Muh*_*uhd 7 java json tostring infinity divide-by-zero

我想要一种简单的方法来打印出一个java对象,或者换句话说,将一个对象序列化为一个字符串.我想看到对象中包含的所有变量的值,如果有更多的对象(如列表或其他),它也应该打印出该对象中的东西.基本上,它会像JSON编码,但JSON不支持无穷大,我需要查看其中一个double或float值是否存在无穷大或NaN.

我怎样才能做到这一点?

Dan*_*olo 11

您可以使用Gson序列化为JSON,因为它现在支持NaN和+/-无穷大

  • 这种方法效果很好,比其他答案中的反射方式更好.我使用了`Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().serializeNulls().create(); System.out.println(gson.toJson(obj));`让我看到空值,NaN和无穷大值. (4认同)

lob*_*234 9

通常ToStringBuilder.reflectionToString(Object)效果很好.虽然在做地图时它不会工作.

  • ...这是 apache commons-lang 的一部分 (2认同)