Checkstyle:如何解决" Hidden Field"错误

时间:2011-10-15 05:41:10

标签: java eclipse checkstyle

我收到此检查样式错误:

'serverURL' hides a field

在此

 private static void setServerURL(final String serverURL) {
    Utility.serverURL = serverURL;
 }

可能是什么原因以及如何解决?

6 个答案:

答案 0 :(得分:44)

已经有一个变量定义serverURL可供此方法使用(除了您接受的形式参数之外)。这被称为“阴影”。

我认为大多数Java程序员都会关闭这个检查,因为它并不是那么令人困惑。

例如,这会触发错误:

public class Foo {
  private int bar = 0;

  public void someMethod(int bar) {
    // There are two bars!  All references in this method will use the parameter bar,
    // unless they are explicitly prefixed with 'this'.
    this.bar = bar;
  }
}

答案 1 :(得分:34)

我认为在构造函数和setter中,set字段名与setter参数名相同是很常见的。这就是我推荐这种配置的原因:

<module name="HiddenField" >
    <property name="ignoreSetter" value="true" />
    <property name="ignoreConstructorParameter" value="true" />
</module>

这样,其他隐藏的野外案件仍被禁止。

答案 2 :(得分:8)

参数和静态字段具有相同的名称。只需重命名其中一个。 有些人遵循命名约定,该约定使用p为所有参数添加前缀。然后,您将serverURL作为字段名称,pServerURL作为参数名称。 或者你可以简单地关掉支票。

答案 3 :(得分:7)

我通过在eclipse中禁用它来解决它。当我登陆这个页面时,我一直在寻找如何做到这一点。我没有在前10个谷歌查询中找到答案所以我不得不弄清楚它的方法。对于正在寻找它的人来说,我就是这样做的:

打开

的Eclipse&GT;设定&GT; Checkstyle的

找到您正在使用的checkstyle配置(您可能已设置或正在使用默认设置,在这种情况下,最好创建自己的副本然后进行编辑)。选择该选项,然后单击右侧的配置按钮。在列表中找到以下配置:

编码问题&gt;隐藏字段

打开配置(UI中有一个名为“open”的按钮。)

取消选择“参数声明”。单击“确定”,然后单击“确定”,再单击“确定”。

答案 4 :(得分:4)

只需在ur方法中更改ur param名称

private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}

private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}

...享受

Jigar Patel

答案 5 :(得分:0)

Kinda愚蠢的错误,但这是我在二传手中修复的简单方法:

是:

public void setName(String name) {
  this.name = name;
}

已更新:

public void setName(String val) {
  this.name = val;
}