2010-11-08 49 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

我將這些設置爲「錯誤」。如果一個類和它的父類都有一個相同名稱的字段,我不想失去任何時間試圖弄清楚爲什麼我似乎爲該字段賦值,但它永遠不會改變!