gpt4 book ai didi

java - 清除 Java 中的 Singleton 实例

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:20 25 4
gpt4 key购买 nike

我有一个单例类来保存应用程序模块的状态。这个类只有很多带有 setter 和 getter 的类变量:

public class ModuleState{

private static ModuleState instance;

private A a;
private B b;
private C c;
..
..
..
..

private ModuleState (){}

public ModuleState getInstance(){
if(instance==null)
instance=new ModuleState();

return instance;
}

在应用程序生命周期的某个特定时刻,我需要清除模块的状态。我现在要做的是通过这样的 clearAll() 方法重置 ModuleState 中的所有变量:

public void clearAll(){
a=null;
b=null;
c=null;

..
..
}

我的问题如下:是否有更简洁的方法来进行此重置?可能清除单例实例本身,而不重置每个类变量?

这种方法的问题是我可能需要向 ModuleState 添加一个新的类变量。在这种情况下,我必须记得在 clearAll() 方法中添加一行以重置新变量。

最佳答案

那...呢

public static volatile ModuleState instance = null;

public static void reset() {
instance = new ModuleState();
}

p.s.:根据下面的讨论:在多线程环境中,同步对实例的访问非常重要,因为允许 JVM cache它的值(value)。您可以使用 volatile如上所示。感谢大家!

干杯!

关于java - 清除 Java 中的 Singleton 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506014/

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