私はライブラリ関数(理想的には、Spring、Guava、Apache Commonsなどの一般的に使用されるフレームワーク)を探しています。これはJavaオブジェクトの値をうまく印刷します。複雑なJavaオブジェクト(オブジェクトのコレクションであるフィールドなど)をきれいに印刷するにはどうすればよいですか?
これは特定の質問ではなく一般的な質問です。 StackOverflowで共通の答えが「クラスに独自のtoString()
メソッドを実装する」という同様の質問がありましたが、このオプションは必ずしも実用的ではありません。私が出会うすべてのオブジェクトでこれを行う一般的な方法を探していますサードパーティのコードから。もう一つの提案は、ApacheのコモンズからRefectionToStringBuilderを使用することです例えば:
new ReflectionToStringBuilder(complexObject, new RecursiveToStringStyle()).toString()
しかし、これは限られた用途を持っている - 例えばそれが出力する傾向がコレクションに遭遇すると、このような何か:実際の使用例は、JGitのpushCommand.call()
メソッドから返されたIterable<PushResult>
をログに記録することです
[email protected][size=1]
- 答えを投稿した場合、それはこので動作するだろうことを確認してください他の複雑なオブジェクトと同様に。
ない何をしたいが、あなたはJSONにシリアライズし、JSON(またはYAMLまたは任意の形式であなたが好きなの)かなり-印刷する – assylias
ありがとう@assyliasをJSONライブラリを使用することができ、このかもしれません助けてください。多分、使用例を教えてください。 –
私は前に 'ReflectionToStringBuilder'を使ったことはありませんでしたので、これを答えとして投稿するつもりはありませんが、' getValue'メソッドをオーバーライドして 'Collection'フィールドとして(またはあなた自身の 'String'バージョンのコレクションでさえ)与えられます。 – Zircon