作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Java 中枚举类型的默认反序列化受到限制,因为 readObject
和 readObjectNoData
抛出 InvalidObjectException
。由于这个原因,枚举类型非常适合实现单例类,没有任何缺陷(条目 77,Effective Java,第二版,Bloch)。
Serializable
?最佳答案
枚举类型实现了Serializable
,因此您可以序列化包含枚举常量的对象。枚举常量的反序列化方式与任何其他对象相同:使用 ObjectInputStream.readObject()
。枚举常量的编码方式与普通类的实例不同,因此 ObjectInputStream.readObject()
可以在不调用它们的 readObject
方法的情况下反序列化它们。还有其他使用特殊编码的类,其中有 String
和 Class
。查看documentation了解更多详情。
如果您想自己实现可序列化的单例类,请查看readResolve
方法。
关于java - Java中枚举的反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772600/
我是一名优秀的程序员,十分优秀!