2017-04-17 14 views
0

naオブジェクトの構造全体と、そのすべてのプロパティと、それが構成するオブジェクトの値をダンプする必要があります。Javaオブジェクトとそのオブジェクトのすべてのプロパティを再帰的にダンプするにはどうすればよいですか?

ほとんどが自動生成されたコードなので、ダンプされたオブジェクトにはtoString()を実装できません。

私は、Apache CommonsのReflectionToStringBuilderRecursiveToStringStyleを使用できると思っていましたが、私が得たすべての試みはすべて、最初のレベルの階層です。

これは、例えば、私が試したものです:

System.out.println(new ReflectionToStringBuilder.toString(someObject, new RecursiveToStringStyle())); 

は、どのように私はこの作業を行うことができますか?

+1

RecursiveToStringStyleのjavadocsは、それが再帰的であることを示しています。 RecursiveToStringStyleがどのように機能しないのか、あなたが探しているものの例を教えてください。 – omajid

+0

@omajid、このサンプルは、独自の 'toString()'を実装するための使い方を示しています。クラスは自動生成されるので、 'toString()'の実装を変更することはできません。 'ToStringBuilder'は動作し、再帰的にダンプをサポートするように見えるので、正しく呼び出すことに過ぎないと思います。 – lpacheco

答えて

0

使用反射は、トップレベルのオブジェクトのすべてのプロパティを取得し、そして再帰プロパティとして返される各オブジェクトの処理を繰り返します。

オブジェクトにプロパティに親のいずれかが格納されている場合、無限ループに入り込まないように注意してください。

+0

私は怠け者であり、既に利用可能で、フレームワークの一部としてテストされていれば、新しいコードを書かないようにしています。 :-) – lpacheco

関連する問題