Хотя на поиски на понимание о Java генериков, я пришел через это:Generic Wildcard Bounded Тип против Generic Тип параметра ограниченной
public static <T extends Number> int sumListElems(List<T> list){
int total = 0;
for(Number n: list)
total += n.intValue();
return total;
}
Предположим, что у меня есть следующий метод, который добавляет элементы в список, ограничивается списками, в которых содержится Number.
Но какая разница этого кода к этому:
public static int sumListElems(List<? extends Number> list){
int total = 0;
for(Number n: list)
total += n.intValue();
return total;
}
Оба компилирует и выполняет, как ожидалось. Каковы различия между этими двумя? Помимо синтаксиса? Когда я предпочел бы использовать подстановочный знак над первым?
Ну, да, используя подстановочный подход, я не могу добавить новый элемент в список, кроме null, или он не будет компилироваться. Но кроме этого?
В этом случае они эквивалентны. –
http://stackoverflow.com/questions/30763895/why-use-a-wild-card-capture-helper-method/30765179#30765179 – ZhongYu
http://stackoverflow.com/questions/15125616/java-generics-wildcards/15125788 # 15125788 – ZhongYu