FindBugs 中的误报 MS_PKGPROTECT 错误

False positive MS_PKGPROTECT bug in FindBugs

我很确定我从 FindBugs 得到了误报。我的代码如下:

public class MyClass {
    protected static String fileNamePrefix;
}        

这是我遇到的错误:

Field should be package protected

A mutable static field could be changed by malicious code or by accident. The field could be made package protected to avoid this vulnerability.

Bug kind and pattern: MS - MS_PKGPROTECT

这真的是误报还是我遗漏了什么?

protected 修饰符允许第 3 方子类意外提升对该字段的访问权限。

class MyAccidentSubClass extends MyClass {
    static {
        fileNamePrefix = "../" + fileNamePrefix;
    }
}

FindBugs 指出 'protected' 无法保护该字段免受野外意外 public 访问。如果该字段受到包保护,那么我们知道其目的是在可信赖的朋友之间分享一些秘密。

一般来说,隐藏字段并创建访问器方法,因为它在封装、线程安全和延迟加载方面更灵活。