【发布时间】:2011-12-08 05:30:42
【问题描述】:
我收到此检查样式错误:
'serverURL' hides a field
在这个
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
可能是什么原因,如何解决?
【问题讨论】:
标签: java eclipse checkstyle
我收到此检查样式错误:
'serverURL' hides a field
在这个
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
可能是什么原因,如何解决?
【问题讨论】:
标签: java eclipse checkstyle
已经定义了一个变量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;
}
}
【讨论】:
bars 之一的名称更改为其他名称。
我认为在构造函数和设置器中设置字段名称与设置器参数名称相同是很常见的。这就是我推荐这种配置的原因:
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
这样其他隐藏字段的情况还是被禁止的。
【讨论】:
参数和静态字段同名。只需重命名其中一个。
有些人遵循命名约定,所有参数都以p 为前缀。然后您将有 serverURL 作为字段名称和 pServerURL 作为参数名称。
或者您可以简单地关闭检查。
【讨论】:
我通过在 Eclipse 中禁用它来解决它。当我登陆此页面时,我正在寻找如何做到这一点。我没有在前 10 名谷歌查询中找到答案,所以我不得不费力地找出答案。对于正在寻找它的人,我是这样做的:
打开
Eclipse>首选项>检查样式
找到您正在使用的 checkstyle 配置(您可能已经设置了该配置,或者您正在使用默认配置,在这种情况下,最好创建一个您自己的副本然后对其进行编辑)。选择它,然后单击右侧的配置按钮。在列表中找到以下配置:
编码问题>隐藏字段
打开配置(在 UI 中有一个名为“打开”的按钮)。
取消选择“参数声明”。单击确定,然后单击确定,然后单击确定。
【讨论】:
只需在你的方法中更改你的参数名称
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
到
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}
享受...
吉格·帕特尔
【讨论】:
有点愚蠢的错误,但这是我在设置器中放置的简单修复方法:
曾经:
public void setName(String name) {
this.name = name;
}
更新:
public void setName(String val) {
this.name = val;
}
【讨论】: