我正在尋找一個庫函數(理想情況下,從一個常用的框架,例如Spring,Guava,Apache Commons等)這將很好地打印任何Java對象的值。如何漂亮地打印複雜的Java對象(例如,具有對象集合的字段)?
這是一個普遍的問題,而不是一個特定的問題。在StackOverflow上看到類似的問題,其中一個常見的答案是「在類上實現你自己的toString()
方法」,但這個選項並不總是實用的 - 我正在尋找一種通用的方式來處理我遇到的任何對象,這可能源於來自第三方代碼。另一項建議是使用RefectionToStringBuilder從Apache的百科全書,e.g:
new ReflectionToStringBuilder(complexObject, new RecursiveToStringStyle()).toString()
但這限制了使用 - 例如當它遇到一個集合它往往輸出是這樣的:
[email protected][size=1]
的實際使用情況實例是記錄一個Iterable<PushResult>
從JGit的pushCommand.call()
方法返回 - 如果張貼的答案,請確保將這項工作作爲以及任何其他複雜的對象。
可能不是你想要什麼,但你可以使用JSON庫序列化到JSON和漂亮打印的JSON(或YAML或任何格式你喜歡) – assylias
感謝@assylias,這可能有幫助。你能否提供一個示例用法? –
我以前從來沒有用過'ReflectionToStringBuilder',所以我不會將它作爲答案發布,但它看起來像你可以做一些事情,比如重寫'getValue'方法來返回一個數組,當'Collection'作爲字段給出(或者甚至只是你自己的那個集合的String類型)。 – Zircon