众所周知,Java提供了默认的可见性修饰符。据我了解,该修饰符可以像其他修饰符一样使用。但是,为什么SonarQube将默认修饰符标记为漏洞-明确声明“var”的可见性?

最佳答案

看一下the rule的描述。

无法显式声明成员变量的可见性
可能导致它具有您所不期望的可见性,并且
可能会使它易于其他类意外修改。

如果您拥有私有类包的属性,则同一包中的任何类都可以修改此属性。

但Package private仍具有有效用途。例如,您可能想将一个类声明为私有包,以便可以在声明该包的包内使用该类,但对于公共用途则是隐藏的。

10-06 01:50