2017-04-17 31 views
0

我需要转储na对象的整个结构,其中包含它的所有属性和对象的值。如何以递归方式转储Java对象和对象中的所有属性?

我无法在转储对象中执行toString(),因为它们大多数都是自动生成的代码。

我想我可以使用来自Apache Commons的ReflectionToStringBuilderRecursiveToStringStyle,但是对于我所有的尝试,我所得到的只是层次结构的第一层。

这是我试过,例如:

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

我怎样才能使这项工作?

+1

RecursiveToStringStyle的javadoc显示它是递归的例子。你能给我一个你正在寻找什么和/或RecursiveToStringStyle不起作用的例子吗? – omajid

+0

@omajid,该示例演示如何使用它来实现自己的'toString()'。由于该类是自动生成的,因此我无法更改它的'toString()'实现。 “ToStringBuilder”起作用并似乎对递归转储有支持,所以我猜测这只是正确调用它的问题。 – lpacheco

回答

0

使用反射把所有的顶层对象的属性,并递归以重复该过程时返回的属性中的每个对象。

如果对象的某个父项存储在属性中,请小心不要进入无限循环。

+0

我很懒,如果已经可以使用并且作为框架的一部分进行测试,就不要写新代码。 :-) – lpacheco