gpt4 book ai didi

java - 可序列化在 Java 中如何工作?

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

如果我有一个存储在 session 中的类的实例,我需要使其可序列化。这个类有一个静态变量,它会在每个存储的实例中被序列化吗?

静态变量是对后台包含大量数据的缓存的引用。所有这些数据都会被序列化吗?如果是这样,最好让这个变量成为 transient 变量,并在每次实例恢复时重新获取缓存实例。也许根本不在类中存储缓存实例。

当类从序列化状态恢复时,构造函数会执行吗?如果没有,我可以使用任何其他方法来重新设置 transient 变量吗?

最佳答案

This class has a static variable, will this be serialized in every instance stored?

没有。根据Java Object Serialization Specificaiton : "类的默认可序列化字段被定义为非 transient 和非静态字段。"

Will the constructor execute when a class is restored from a serialized state?

没有。反序列化绕过构造函数(除非您有一个不可序列化的父类(super class))。

if not is there any other method I can use to re-instate a transient variable?

您可以为此使用 readObject() 方法,如 Serializable 中所述API文档。

关于java - 可序列化在 Java 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641669/

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