java – 从实例方法“findbugs”警告中修改“写入静态字段”的最
发布时间:2020-12-14 17:43:52 所属栏目:Java 来源:网络整理
导读:我有一个类似于此类,findbugz抱怨“从实例方法(initialize()和killStaticfield()写入静态字段”).我不能在ctor中设置静态字段. 这个问题最好的解决办法是什么? 会把staticField放在AtomicReference中吗? public class Something { private static SomeClas
我有一个类似于此类,findbugz抱怨“从实例方法(initialize()和killStaticfield()写入静态字段”).我不能在ctor中设置静态字段.
>这个问题最好的解决办法是什么? 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 void getStaticField() { if(Something.staticField == null) Something.staticField = new SomeClass();; return Something.staticField; } } 通过类名参考你的静态变量,这将删除findbugz警告. 更好的是: public class Something { private static final SomeClass staticField = new SomeClass(); public Something() { } public static void getStaticField() { return Something.staticField; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |