gpt4 book ai didi

java - 使用 XMLEncoder 序列化 UUID

转载 作者:行者123 更新时间:2023-12-01 15:35:21 25 4
gpt4 key购买 nike

我正在使用 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

有人知道如何让它发挥作用吗?

最佳答案

我还没有看到有人真正正确地回答这个问题并且确实有效:

public class UUIDPersistenceDelegate extends PersistenceDelegate {
private HashSet<UUID> hashesWritten = new HashSet<UUID>();

public Expression instantiate(Object oldInstance, Encoder out) {
UUID id = (UUID) oldInstance;
hashesWritten.add(id);
return new Expression(oldInstance, UUID.class, "fromString", new Object[]{ id.toString() } );
}

protected boolean mutatesTo(Object oldInstance, Object newInstance) {
return hashesWritten.contains(oldInstance);
}

}

关于java - 使用 XMLEncoder 序列化 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com