繁体   English   中英

java中的可序列化工作原理如何?

[英]how does serializable work in java?

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

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

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

这个类有一个静态变量,这会在每个实例中被序列化存储吗?

根据Java Object Serialization Specificaiton :“类的默认可序列化字段被定义为非瞬态和非静态字段。”

当一个类从序列化状态恢复时,构造函数是否会执行?

否。反序列化绕过构造函数(除非您有一个不可序列化的超类)。

如果没有,我可以使用任何其他方法来重新设置瞬态变量?

您可以使用readObject()方法,如Serializable API doc中所述。

静态和瞬态字段未序列化。 不,没有调用构造函数。 有关详细信息,请查看: http//java.sun.com/developer/technicalArticles/ALT/serialization/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM