如何避免“对构造函数中的非最终静态字段进行可能的不安全赋值”(AssignmentToNonFinalStatic)

Rob*_*Rob 2 java pmd

我的代码目前受到“对构造函数中非最终静态字段的可能不安全赋值”(PMD 中的 AssignmentToNonFinalStatic)的影响。

类写成单例类,受此警告影响的属性如下所示

私有静态字符串 myProperty;

并由这个结构填充:

public SystemPropertyUtils() throws ConfigException {
    someMethodThrowingConfigException();
    myProperty = "someValue" + this.someOtherValueFromAThreadSafeString;
}
Run Code Online (Sandbox Code Playgroud)

有没有详细的方法来否定这个警告?

Pet*_*rey 5

不要在构造函数中设置静态字段。在这种情况下,使字段非静态。

否则,我将不得不怀疑您不需要构造函数。相反,您可以在静态初始化程序块或静态方法中初始化静态字段。

  • @simpleuser 增加一个值是合理的,尽管你应该使用`static final AtomicLong s_counter = new AtomicLong();` (2认同)