XMLEncoderを使用してオブジェクトグラフをXMLファイルに書き込みます。 UUIDプロパティ(JavaBeanにidという名前が付いています)を除いて問題なく動作します。 私はPersistenceDelegateが必要なことを知っています。私は、次のいずれかを書いた:XMLEncoderでUUIDをシリアライズ
class UuidPersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
UUID id = (UUID) oldInstance;
return new Expression(oldInstance, id.getClass(), "fromString", new Object[]{ "id" });
}
}
とエンコーダに設定します。
encoder.setPersistenceDelegate(UUID.class, new UuidPersistenceDelegate());
実行時にencoder.writeObjectを呼び出すときに、私は(...)次の例外を取得:
java.lang.IllegalArgumentException:無効なUUID文字列:id
これを動作させる方法を知っている人はいますか?