2011-10-15 21 views

回答

35

已经有一个定义为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

正如你看到的方法是静态的,我不能使用这个 – Romi

+5

@CoryKendall你建议什么是解决这个问题? –

+0

解决方案是关闭支票,或者将其中一个“酒吧”的名称改为其他名称。 –

6

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

6

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

打开

Eclipse的>首选项> Checkstyle的

找到您所使用的CheckStyle的配置(您可能已经设置或您正在使用在这种情况下默认是创建自己的副本并编辑它的更好的主意)。选择它,然后单击右侧的配置按钮。找到下面的配置列表:

编码问题>隐藏域

打开配置(也称为按键在UI“开”)。

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

+0

出于某种原因,我的检查风格在“编码问题”下有多个“隐藏字段”选项。我禁用了所有的人,然后只启用了一个,然后按照上面的说明工作。如果其他人有同样的问题,希望做一个明确的插件。 –

+0

如何修复代码而不是检查器的转动?看Cory Kendall的回答 –

+0

@Hannes当然。这正是** checkstyle **向用户推荐的解决方案。然而,登陆此页面的人正在寻找方法来为此做出checkstyle stop警告。 –

2

在乌尔法只是改变乌尔PARAM名

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

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

享受...

Jigar帕特尔

26

我认为这是很常见的构造函数和setter的set字段名称与setter参数名称相同。这就是为什么我推荐这种配置:

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

这样,其他隐藏的字段仍然被禁止。