Bhu*_*han 9 java serialization static static-members
就像我们保存instance variables
使用序列化的方式一样,有什么方法可以保存static
成员的状态?
如果出现这种情况,那么恢复静态成员的状态对于恢复某些东西是必要的,那么如何做呢?
Boz*_*zho 12
我想到的最简单的选择是使用单例而不是静态字段.单例对象可以被序列化和反序列化,你可以管理它的生命周期,同时你保留静态字段给你的"全局状态"(也就是说,全局状态是一件坏事,但这是一个不同的主题)
否则 - 在类加载器的整个生命周期中保留静态(通常表示JVM的生命周期).因此,如果要保持状态,则在关闭时执行此操作并在类加载时恢复它是有意义的.
Runtime.addShutdownHook(..)
在关机时执行序列化static {..}
块在下次打开时加载它序列化格式可以是任何东西.JSON,BSON,java序列化(使用ObjectOutputStream
)
但这是不寻常的,在大多数情况下是错误的.所以要确保这是你想要的.如果您只是希望状态在应用程序的生命周期中存在,请不要执行任何操作.如果你想坚持更长时间,可以选择单例选项或考虑使用小型数据库而不是静态字段.