2011-02-05 80 views
1

我需要转储Java对象的所有属性。我发现了一些这样做的功能,但没有一个处理自我引用和我发现的所有功能都成为无限递归的螺旋。Java转储对象

//我将在Android上运行此功能,但这应该不重要。

+2

你有没有使用调试器和检查对象的考虑? – cdmckay 2011-02-05 01:25:19

回答

1

如果这只是为了调试,或者如果你想要某种形式的基本序列化,请看XStream。下面是从他们的网站说起特别是自我参照的例子...

Cd bj = new Cd("basement_jaxx_singles"); 

List order = new ArrayList(); 
// adds the same cd twice (two references to the same object) 
order.add(bj); 
order.add(bj); 

// adds itself (cycle) 
order.add(order); 

XStream xstream = new XStream(); 
xstream.alias("cd", Cd.class); 
System.out.println(xstream.toXML(order)); 

,输出为...

<list> 
    <cd> 
    <id>maria rita</id> 
    </cd> 
    <cd> 
    <id>basement_jaxx_singles</id> 
    </cd> 
    <cd reference="../cd[2]"/> 
    <list reference=".."/> 
</list> 
+0

我试过这个,将会使用xstream,但它不支持私有字段:/ – Prospero 2011-02-05 03:32:08