XMLEncoder を使用して、オブジェクト グラフを XML ファイルに書き込みます。UUID プロパティ (私の JavaBean にidという名前があります) を除いて、それは正常に動作します。それを行うには PersistenceDelegate が必要であることを知っています。私は次のものを書きました:
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
これを機能させる方法を知っている人はいますか?