我得到了这个checkstyle错误:
'serverURL' hides a field
在这
private static void setServerURL(final String serverURL) { Utility.serverURL = serverURL; }
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
可能是什么原因,如何解决?
kyvafyod1#
已经有一个定义的变量serverURL可用于此方法(除了您接受的形参之外)。这就是所谓的“影子”。我认为大多数Java程序员都不会使用这种检查,因为它实际上并没有那么令人困惑。例如,这将触发错误:
serverURL
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; }}
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;
7ajki6be2#
我认为在构造函数和setter中,set字段名与setter参数名相同是很常见的。这就是为什么我推荐这个配置:
<module name="HiddenField" > <property name="ignoreSetter" value="true" /> <property name="ignoreConstructorParameter" value="true" /></module>
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
这样,其他隐藏字段的情况仍然是禁止的。
ubby3x7f3#
参数和静态字段具有相同的名称。给其中一个重命名。有些人遵循一种命名约定,即所有参数都以p作为前缀。然后你将serverURL作为字段名,pServerURL作为参数名。或者你可以直接关掉支票。
p
pServerURL
x8diyxa74#
我通过在Eclipse中禁用它来解决它。我正在寻找如何做到这一点,当我降落在这一页。我没有找到答案前10名谷歌查询,所以我不得不弄清楚了艰难的道路。对于那些正在寻找的人来说,这就是我是如何做到的:开放Eclipse>首选项>检查样式找到你正在使用的检查样式配置(你可能已经设置了它,或者你正在使用默认值,在这种情况下,创建一个你自己的副本,然后编辑它是一个更好的主意)。选择该选项,然后单击右侧的配置按钮。在列表中找到以下配置:编码问题>隐藏字段打开配置(UI中有一个名为“打开”的按钮)。取消选择“参数声明”。单击OK,然后单击OK,然后单击OK。
6kkfgxo05#
只要在你的方法中修改你的参数名
private static void setServerURL(final String serverURL) {Utility.serverURL = serverURL;}
到
private static void setServerURL(final String serverURLXYZ) {Utility.serverURL = serverURLXYZ;}
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
享受...吉加尔·帕特尔
l2osamch6#
我读了文档:https://checkstyle.sourceforge.io/apidocs/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.html解决方案如下:
<module name="HiddenField"> <property name="tokens" value="VARIABLE_DEF"/> </module>
<module name="HiddenField">
<property name="tokens" value="VARIABLE_DEF"/>
如果已经有一个HiddentField标记,则添加tokens属性。我有一个类似的问题,与此修复一切工作正常。
alen0pnh7#
有点愚蠢的错误,但这里是我放在我的setter中的简单修复方法:是:
public void setName(String name) { this.name = name;}
public void setName(String name) {
this.name = name;
更新:
public void setName(String val) { this.name = val;}
public void setName(String val) {
this.name = val;
7条答案
按热度按时间kyvafyod1#
已经有一个定义的变量
serverURL
可用于此方法(除了您接受的形参之外)。这就是所谓的“影子”。我认为大多数Java程序员都不会使用这种检查,因为它实际上并没有那么令人困惑。
例如,这将触发错误:
7ajki6be2#
我认为在构造函数和setter中,set字段名与setter参数名相同是很常见的。这就是为什么我推荐这个配置:
这样,其他隐藏字段的情况仍然是禁止的。
ubby3x7f3#
参数和静态字段具有相同的名称。给其中一个重命名。有些人遵循一种命名约定,即所有参数都以
p
作为前缀。然后你将serverURL
作为字段名,pServerURL
作为参数名。或者你可以直接关掉支票。x8diyxa74#
我通过在Eclipse中禁用它来解决它。我正在寻找如何做到这一点,当我降落在这一页。我没有找到答案前10名谷歌查询,所以我不得不弄清楚了艰难的道路。对于那些正在寻找的人来说,这就是我是如何做到的:
开放
Eclipse>首选项>检查样式
找到你正在使用的检查样式配置(你可能已经设置了它,或者你正在使用默认值,在这种情况下,创建一个你自己的副本,然后编辑它是一个更好的主意)。选择该选项,然后单击右侧的配置按钮。在列表中找到以下配置:
编码问题>隐藏字段
打开配置(UI中有一个名为“打开”的按钮)。
取消选择“参数声明”。单击OK,然后单击OK,然后单击OK。
6kkfgxo05#
只要在你的方法中修改你的参数名
到
享受...
吉加尔·帕特尔
l2osamch6#
我读了文档:
https://checkstyle.sourceforge.io/apidocs/com/puppycrawl/tools/checkstyle/checks/coding/HiddenFieldCheck.html
解决方案如下:
如果已经有一个HiddentField标记,则添加tokens属性。
我有一个类似的问题,与此修复一切工作正常。
alen0pnh7#
有点愚蠢的错误,但这里是我放在我的setter中的简单修复方法:
是:
更新: