2014-05-19 57 views
0

我想用兩個其他params參數化類,以便我可以獨立提供其中的一個,即AdGroupIdentifier或KeywordIdentifier。但我得到以下警告:The type parameter KeywordIdentifier is hiding the type KeywordIdentifier.Java參數化類警告

你認爲我做錯了什麼?什麼是這樣做的正確方法?

感謝您的幫助!

public class Metrics <T extends AdGroupIdentifier, KeywordIdentifier> { 

    public void addMetric(T identifier){ .... } 

    } 

回答

2

看來你的班級名字是KeywordIdentifier。名稱爲KeywordIdentifier的類參數與名稱不相關,但會混淆人類。這正是編譯警告的意思。

根據命名約定,你應該傾向於使用一個(或最多2個)大寫字母來調用類型參數。在你的情況下,類定義修改爲

public class Metrics <T extends AdGroupIdentifier, K> 

,或者,如果你想秒參數擴展KeywordIdentifier類:

public class Metrics <T extends AdGroupIdentifier, K extends KeywordIdentifier> 
1

只要刪除KeywordIdentifier即可。看來,AdGroupIdentifier實現或擴展KeywordIdentifier:

public class Metrics <T extends AdGroupIdentifier> { 

     public void addMetric(T identifier){ .... } 

    } 
+0

+1我同意,只是刪除它,因爲它不會出現很需要或使用。 –

0

通常泛型類型,給出一個字母的名字,因爲它們是參數化。

你的方式,你可能會混淆KeywordIndetifier其中Object與您的類KeywordIdentifer,雖然他們有相同的名稱,他們是不相關的。