栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

自定义枚举也是可序列化的吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自定义枚举也是可序列化的吗?

之所以起作用,是因为的序列化过程

Enum
不同于其他类的序列化过程。从官方文档中:

1.12枚举常量的序列化

枚举常量的序列化与普通的可序列化或可外部化的对象不同。枚举常量的序列化形式仅由其名称组成;常量的字段值不存在于表单中。为了序列化枚举常量,ObjectOutputStream写入枚举常量的name方法返回的值。为了反序列化枚举常量,ObjectInputStream从流中读取常量名称。然后,通过调用java.lang.Enum.valueOf方法,将常量的枚举类型与接收到的常量名称作为参数传递,来获得反序列化的常量。像其他可序列化或可外部化的对象一样,枚举常量可以用作随后出现在序列化流中的反向引用的目标。

这意味着您所有的自定义字段 都不会 被序列化。在你的情况一切正常,因为你的应用程序仍在运行,并且您得到 相同的

Enum
,你传递给实例
savedInstanceState.putSerializable

但是,想象一下您的应用因为

Android
没有足够的内存而被杀死的情况。下次用户打开应用程序时,您将获得一个
Enum
实例,并且所有自定义字段都将丢失,并由构造方法重新初始化。因此,枚举中的可变字段始终有效
transient



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号