gpt4 book ai didi

java - 修复此 'write to static field from instance method' findbugs 警告的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:45:10 30 4
gpt4 key购买 nike

我有一个看起来与此类似的类,findbugz 提示“从实例方法写入静态字段”(initialize()killStaticfield())。我无法在 ctor 中设置静态字段。

  • 解决此问题的最佳方法是什么?
  • 将 staticField 放在 AtomicReference 中就足够了吗?

     public class Something
    {
    private static SomeClass staticField = null;
    private AnotherClass aClass;
    public Something()
    {

    }

    public void initialize()
    {
    //must be ctor'd in initialize
    aClass = new AnotherClass();
    staticField = new SomeClass( aClass );
    }

    public void killStaticField()
    {
    staticField = null;
    }

    public static void getStaticField()
    {
    return staticField;
    }
    }

最佳答案

尽可能接近您的原始设计...

public class Something {
private static volatile SomeClass staticField = null;

public Something() {
}

public static SomeClass getStaticField() {
if(Something.staticField == null)
Something.staticField = new SomeClass();;
return Something.staticField;
}
}

通过类名引用您的静态变量,这将删除 findbugz 警告。将您的静态变量标记为 volatile,这将使引用在多线程环境中更安全。

更好的是:

public class Something {
private static final SomeClass staticField = new SomeClass();

public Something() {
}

public static SomeClass getStaticField() {
return Something.staticField;
}
}

关于java - 修复此 'write to static field from instance method' findbugs 警告的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630485/

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