gpt4 book ai didi

java - Java中枚举的反序列化

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:39 25 4
gpt4 key购买 nike

Java 中枚举类型的默认反序列化受到限制,因为 readObjectreadObjectNoData 抛出 InvalidObjectException。由于这个原因,枚举类型非常适合实现单例类,没有任何缺陷(条目 77,Effective Java,第二版,Bloch)。

  • 为什么,一方面,枚举类型完全实现了 Serializable
  • 枚举引用在实践中应该如何反序列化?

最佳答案

枚举类型实现了Serializable,因此您可以序列化包含枚举常量的对象。枚举常量的反序列化方式与任何其他对象相同:使用 ObjectInputStream.readObject()。枚举常量的编码方式与普通类的实例不同,因此 ObjectInputStream.readObject() 可以在不调用它们的 readObject 方法的情况下反序列化它们。还有其他使用特殊编码的类,其中有 StringClass。查看documentation了解更多详情。

如果您想自己实现可序列化的单例类,请查看readResolve 方法。

关于java - Java中枚举的反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772600/

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