[英]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.