我收到此检查样式错误:
'serverURL' hides a field
在此
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
可能是什么原因以及如何解决?
答案 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;
}