我正在寻找有关基于以下(Java)序列化对象图的最佳方法的一些信息:
- 如果它们的状态相等,则同一类的两个对象必须二进制相等(逐位)与 true 相比。(必须不依赖于 JVM 字段排序)。
- 集合仅使用数组建模(没有集合)。
- 所有实例都是不可变的
- 序列化格式应该是 byte[] 格式而不是基于文本的。
- 我控制着图中的所有类。
我不想在类中放置一个空的构造函数只是为了支持序列化。我已经研究过基于我自己的遍历和 Objenisis 实现一个解决方案,但我的问题似乎并不那么独特。首先更好地检查任何现有/完整的解决方案。
更新详情:
首先,感谢您的帮助!
- 对象必须根据对象状态序列化为完全相同的位顺序。这很重要,因为二进制内容将被数字签名。序列化格式的重建将基于对象的状态,而不是存储原始位。
- 不同技术之间的互操作性很重要。我确实看到该软件在 ex 上运行。.Net 未来。序列化格式中没有 Java 风格。
关于不可变性的注释:数组的值从参数复制到构造函数的内部字段。不太重要。
最好的祝福,
尼古拉斯·林德伯格