我不想告诉你这个,我知道这可能不是你希望的答案,但是:
它确实不可能开箱即用,因为该行为在检查中是硬编码的。摘自 Checkstyle源代码:
if (!("private".equals(variableScope)
|| inInterfaceOrAnnotationBlock // implicitly static and final
|| (mods.contains("static") && mods.contains("final"))
|| ("package".equals(variableScope) && isPackageAllowed())
|| ("protected".equals(variableScope) && isProtectedAllowed())
|| ("public".equals(variableScope)
&& getPublicMemberRegexp().matcher(varName).find())))
{
log(varNameAST.getLineNo(), varNameAST.getColumnNo(),
"variable.notPrivate", varName);
}
您必须编写自己的 check,可能作为子类VisibilityModifierCheck
覆盖该方法visitToken()
以允许您的异常。
另一方面,如果您的类Foo
是内部类,那么您也可以简单地将字段声明为私有并仍然从外部类访问它们。一种特殊情况,但通常是 getter 和 setter 特别烦人的情况。