XMLEncoderに次の問題があります。私はこのようになりますクラスをシリアル化したい:XMLシリアル化のみ1つのフィールドをシリアル化
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>
What's going on? XMLEncoderは、同じクラスの静的フィールドを持つループを検出し、それをさらに直列化しませんか?しかし、私はエラーが発生しません... 私はシリアル化できないか、何か他のものとしてそのフィールドをマークできますか?
私はXMLEncoderを初めて使用しましたが、あなたの説明どおりに動作しました...しかし、この場合は動作しません!たとえ私がすべてのinitのものをコンストラクタの中に入れたとしても... – reox