2014-05-19 59 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,虽然他们有相同的名称,他们是不相关的。