【发布时间】:2016-05-10 09:30:40
【问题描述】:
我有一些数据结构的实现,这里是scheme
interface Structure {
//some methods
}
class SomeRealization implements Structure {
...
}
class AnotherRealization implements Structure {
...
}
我以char array 的形式手动序列化它们,使用FileChannel 和CharBuffer。是的,我可以通过writeObject 方法做同样的事情,但是nio 比ObjectOutputStream 快。
我想定义 mixin 来保存序列化/反序列化方法,以使项目可扩展,并且因为实现的序列化/反序列化算法不同。像这样的
interface StructureIO {
void saveStructure(String filename);
Structure loadStructure(String filename);
}
因此,如果我为实现结构实现此接口,我将需要调用loadStructure(String filename) 方法的实例,这不合适,实际上这很糟糕。
是的,我可以在 Java 8 中将 loadStructure(String filename) 方法定义为静态方法,但它不会给我任何信息,因为静态方法不能被覆盖。
所以如果你有什么想法,请写 在此先感谢 ;)
【问题讨论】:
-
看到“手动序列化接口”首先想到的是Externalizable...这是一个允许实现类提供手动序列化的接口。
-
@VGR nio 比 Externalizable 更快,这就是为什么我不想使用 Externalizable
-
@VGR 而不是
nio比ObjectOutputStream更快 -
快多少?磁盘 I/O 可能更像是一个瓶颈。即使这确实提高了性能,您是否会经常进行这种加载和保存以需要它?是否值得增加额外的复杂性?
-
@VGR 关于额外的复杂性你是完全正确的,但是如果我需要存储大小为 1,000,000 个元素的 char 数组怎么办?好的,我会做一些测试并回复你:)
标签: java serialization architecture mixins