gpt4 book ai didi

java - 有什么办法可以保存 `static members` 的状态吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:33 25 4
gpt4 key购买 nike

就像我们使用序列化保存实例变量的方式一样,有什么方法可以保存static成员的状态吗?

如果在某种情况下,必须恢复静态成员的状态才能恢复某些内容,该怎么做?

最佳答案

我想到的最简单的选择是使用 singleton而不是静态字段。单例对象可以序列化和反序列化,您可以管理它的生命周期,同时保留静态字段为您提供的“全局状态”(也就是说,全局状态是一件坏事,但这是另一个话题)

否则 - 静态状态在类加载器的整个生命周期(这通常意味着 JVM 的生命周期)中得到保留。因此,如果你想持久化状态,在关闭时执行它并在类加载时恢复它是有意义的。

  • Runtime.addShutdownHook(..) 在关闭时执行序列化
  • 使用 static {..} block 在下次打开时加载它

序列化格式可以是任何格式。 JSON、BSON、java序列化(使用ObjectOutputStream)

但这是不寻常的,在大多数情况下是错误的做法。因此,请确保这是您想要的。如果您只是希望状态在应用程序的生命周期内存在,请不要做任何事情。如果您想更长时间地保留某些内容,请选择单例选项或考虑使用小型数据库而不是静态字段。

关于java - 有什么办法可以保存 `static members` 的状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6643977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com