我正在阅读ObjectOutputStream 文档并阅读有关序列化的内容,但我有些困惑。它指出
对单个对象的多个引用使用引用共享机制进行编码,以便对象的图形可以恢复到与原始对象相同的形状。
引用共享机制是什么意思?它还指出
枚举常量的序列化方式与普通的可序列化或可外部化对象不同。枚举常量的序列化形式仅由其名称组成;不传输常量的字段值。为了序列化枚举常量,ObjectOutputStream 写入由常量名称方法返回的字符串,就像其他可序列化或可外部化的对象一样,枚举常量可以作为随后出现在序列化流中的反向引用的目标。
我能想到的一个原因是,因为枚举字段是常量,所以它们不会被序列化。那么,如果我们需要序列化一个 Enum,该怎么办呢?另一件事,如果状态不能被序列化,为什么编译器不限制我们序列化一个 Enum 呢?枚举常量可以作为反向引用的目标是什么意思?
请帮助澄清这个疑问。谢谢。