我对XMLEncoder有以下问题。我想序列化类,看起来像这样:仅限XML序列化序列化一个字段
public class MyClass{
private Object myObject;
private Object anotherObject;
private static MyClass instance = new MyClass();
[myObject and anotherObject are set in the class later...]
public static MyClass getInstance(){
return instance;
}
[getter and setter methods here]
}
现在我想序列化这样的对象(内部MyClass的):
public void saveObject(){
[try catch stuff not shown]
FileOutputStream fos = new FileOutputStream(new File("object.xml"));
XMLEncoder xmle = new XMLEncoder(fos);
xmle.writeObject(instance);
xmle.close();
}
但我object.xml不包含的价值观myObject和anotherInstance,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_24" class="java.beans.XMLDecoder">
<object class="MyClass"/>
</java>
这是怎么回事? XMLEncoder是否检测到具有相同类的静态字段的循环并且不会进一步序列化它?但我没有得到任何错误... 我可以标记该字段为不可序列化或其他?
嗯,它不是我第一次使用XMLEncoder,它的工作原理总是和你描述的一样......但是在这种情况下,它不工作!即使我把所有的init东西放在构造函数里面...... – reox 2011-12-23 15:16:23