开发者

how does serializable work in java?

开发者 https://www.devze.com 2023-02-03 02:46 出处:网络
If I have an instance of a class that I store i开发者_开发问答n a session I need to make it serializable. This class has a static variable, will this be serialized in every instance stored?

If I have an instance of a class that I store i开发者_开发问答n a session I need to make it serializable. This class has a static variable, will this be serialized in every instance stored?

The static variable is a reference to a cache containing a lot of data in the background. Will all of this data be serialized? If so, it seems preferable to make this variable transient and re-fetch the cache instance each time the instance is restored. Maybe not store the cache instance at all in the class.

Will the constructor execute when a class is restored from a serialized state? if not is there any other method I can use to re-instate a transient variable?


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

No. According to the Java Object Serialization Specificaiton: "Default serializable fields of a class are defined to be the non-transient and non-static fields."

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

No. Deserialization bypasses constructors (unless you have a non-serializable superclass).

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

You can use the readObject() method for that, as described in the Serializable API doc.


static and transient fields are not serialized. No, the constructor is not called. For more details, please check this out: http://java.sun.com/developer/technicalArticles/ALT/serialization/

0

精彩评论

暂无评论...
验证码 换一张
取 消