【问题标题】:Usage of eclipse warning "field declaration hides another field or variable"?eclipse警告“字段声明隐藏另一个字段或变量”的使用?
【发布时间】:2011-05-06 14:18:19
【问题描述】:

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

您认为这个警告有多重要?

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

发生这种情况的代码示例:

public class Test {
   private String caption = null;

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

我已经看到了重命名字段的解决方案,即“fCaption”,但这会导致可以生成的自动 getter/setter 具有奇怪的名称 (getfCaption())。 不是不可读,而是丑陋...

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

【问题讨论】:

  • 我的一点也不抱怨......

标签: java eclipse compilation member-hiding


【解决方案1】:

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

【讨论】:

  • 同意,名称阴影可能会导致细微的错误,尤其是如果您没有使用 this 关键字作为任何类变量的前缀。但是,对于构造函数和 setter/getter 来说,这似乎很愚蠢
  • 但是:不进行名称隐藏也会导致细微的错误。反过来说,就像让一个方法访问一个字段而不是它的参数一样,如果人们应用参数具有 _p 后缀的约定,但在他们的实现中忘记了这一点。
【解决方案2】:

我会说你只是禁用了这个警告——这在你的约定中似乎没有用。难怪默认会被忽略。

【讨论】:

  • 这是一个在eclipse中默认禁用的设置。在首选项中,Java - 编译器 - 错误/警告,在“名称阴影和冲突”下
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2021-12-01
    • 2015-12-26
    • 2014-04-08
    • 1970-01-01
    相关资源
    最近更新 更多