2010-11-08 54 views
5

Eclipse有一个名为 的“编译器设置”字段声明隐藏了另一个字段或变量“,可以设置为警告/错误。使用eclipse警告“字段声明隐藏了另一个字段或变量”?

您认为此警告有多重要?

什么是处理此问题的好标准方法?

在哪里发生这种情况

代码示例:

public class Test { 
    private String caption = null; 

    public Test(String caption) { // here 
    this.caption = caption; 
    } 
} 

我见过的解决方案,其中字段重命名,即“fCaption”,但是这将导致自动的getter /可genereated制定者有奇名称(getfCaption())。 不可读,但丑陋...

编辑:哦,是的,有可能重命名方法签名Test(String caption_)或类似的东西,但最终会在javadoc看起来很奇怪。

+0

我不会抱怨.... – 2010-11-08 10:24:17

回答

6

在我看来,这是一个非常有用的选项,应该启用它来显示编译器警告。有一个选项(在我的版本中至少是Eclipse 3.5.2,Java EE特性1.2.2),以进一步在构造函数和getter/setter中启用/禁用它,以防止误报。

eclipse compiler settings

+0

同意,名称shadowing可能会导致细微的错误,特别是如果您不使用此关键字来为任何类变量添加前缀时。但是,对于构造函数和设置者/获取者来说看起来很愚蠢 – 2010-11-08 11:08:41

+0

但是:不进行名字遮蔽也会导致细微的错误。换句话说,就像有一个方法访问一个字段而不是它的参数一样,如果人们应用一个参数具有_p后缀的约定,但是在他们的实现中忘记了这一点。 – zedoo 2013-09-04 13:57:41

1

我想说,你只是禁用此警告 - 它似乎没有用于你的约定。难怪它在默认情况下被忽略。

+0

它是一个在eclipse中默认禁用的设置。 在首选项中,名称shadowing和conflict中的Java - 编译器 - 错误/警告 – Fredrik 2010-11-08 10:23:51

0

我将这些设置为“错误”。如果一个类和它的父类都有一个相同名称的字段,我不想失去任何时间试图弄清楚为什么我似乎为该字段赋值,但它永远不会改变!