If I have an instance of a class that I store in 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With