示例:
public enum TestEnum {
FOO(4), BAR(7);
public final int externalValue;
private TestEnum(int externalValue) {
this.externalValue = externalValue;
}
}
注意没有 getExternalValue() 方法。由于 externalValue 字段是最终字段,因此不存在被修改的风险。通过 Sonar 运行这样的代码会出现“变量‘externalValue’必须是私有(private)的并且具有访问器方法”错误。
假设我是个白痴,并解释一下:为什么我绝对需要实现和使用 externalValue 的访问器?
很难解释为什么,但 Java Bean 模式从一个聪明的构造变成一个普遍法则的方式,在某种程度上让我感到不安。我只是觉得不必总是有必要。
最佳答案
在这种情况下, Sonar 规则是完全错误的;枚举甚至不可能符合 JavaBean 规范(因为它需要公共(public)构造函数)
静态代码分析器总是会发生这种情况;您可以使用 //NOSONAR
注释或 @SuppressWarnings
注释选择性地禁用某些警告。
关于java - 最终字段而不是枚举中的访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936037/