首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反序列化后如何获得瞬态变量的原始值

反序列化后如何获得瞬态变量的原始值
EN

Stack Overflow用户
提问于 2014-08-12 18:32:17
回答 4查看 6.6K关注 0票数 1

使用瞬态变量,我们可以停止序列化所需的值,但是在反序列化之后,我们得到了瞬态变量的默认值,并且正在释放原始值。那么,创建瞬态变量的需要是什么呢?我们可以跳过创建变量本身。如果可能的话,如何得到瞬态变量的原始值。

EN

回答 4

Stack Overflow用户

发布于 2014-08-12 18:36:19

瞬态变量的思想是,将其原始值保持为序列化形式是没有意义的,因为在反序列化之后,它将不处于有效状态(例如,考虑一个持有开放Socket的成员变量)。

在对象反序列化之后,瞬态变量应该通过某种方法调用来初始化(例如,该成员的getter可以初始化它,如果它为null)。

票数 1
EN

Stack Overflow用户

发布于 2014-08-12 18:42:43

关于的解释,为什么有一个瞬态关键字?/瞬变变量的用途是什么?i喜欢指出这个问题:Why does Java have transient fields?

它巧妙地解释了瞬态变量被用于i.a。出于性能原因,假设预计算来自存储在对象中的其他值组合的某些值。您需要在代码中使用它们,但是只有当对象被序列化并发送/存储到某个地方时,它们才会占用宝贵的空间。

另一种用途是,正如Eran所提到的那样,将变量存储在对象中,这些变量是它的函数所必需的,但同时又依赖于底层系统。

至于,如何获得瞬态变量的原始值?,并没有明确的方法来实现。特别是如果您序列化和对象以在两个应用程序之间进行传输,则不可能实现,因为数据根本不存在。

票数 1
EN

Stack Overflow用户

发布于 2014-08-12 18:45:16

考虑非常基本的场景Person

阶级人{等分暗含暗号的私人名称

在这里,存储名称和道布是有意义的,但是存储Age并不是因为它每天都在变化,所以声明它为transient

并且它总是可以计算为Current date - DOB,这将给出准确的年龄。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25271605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档