Например есть метод:
public static Double sum(List<? extends Number> numList) {...}
Вместо него с тем же успехом можно использовать:
public static Double sum(List<Number> numList){...}
И какой профит от <? extends Number>?
Если есть функция
public static Double sum(List<? extends Number> numList) {
return numList.stream()
.mapToDouble(Number::doubleValue)
.reduce((left, right) -> left + right)
.getAsDouble();
}
то в нее можно передавать лист любых Number-ов (Double, Long итд).
Если же параметр будет просто List<Number>, то лист Double-ов передать нельзя.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости