public class GetResponse <T extends KeywordIdentifier>{
private List<KeywordMetrics<T>> metrics = null;
public List<KeywordMetrics<T>> getMetrics(){
return this.metrics;
}
public void setMetrics(List<KeywordMetrics<T>> metrics){
this.metrics = metrics;
}
}
public class AdWordsKeywordIdentifier extends KeywordIdentifier {
//body
}
public class BingKeywordIdentifierextends KeywordIdentifier {
//body
}
GetResponse<? extends KeywordIdentifier> result= new GetResponse<AdWordsKeywordIdentifier>();
List<KeywordMetrics<AdWordsKeywordIdentifier>> stats = getGoogleStats();
List<KeywordMetrics<BingKeywordIdentifier>> stats2 = getBingStats();
result.setMetrics(stats);
result.setMetrics(stats2);
result.setMetrics(stats) method produces compile error.
ERROR (The method setMetrics(List<KeywordMetrics<capture#2-of ?extends KeywordIdentifier>>) in the type GetResponse<capture#2-of ?extends KeywordIdentifier> is not applicable for the arguments(List<KeywordMetrics<AdWordsKeywordIdentifier>>)
Could you please explain me why is that and how I can fix it?