Зачем в Java дженерик ? extends Number, когда можно просто Number

122
28 апреля 2019, 10:30

Например есть метод:

public static Double sum(List<? extends Number> numList) {...}

Вместо него с тем же успехом можно использовать:

public static Double sum(List<Number> numList){...}

И какой профит от <? extends Number>?

Answer 1

Если есть функция

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-ов передать нельзя.

READ ALSO
Java ASCII и (char)

Java ASCII и (char)

Вводил разные значения в

140
Открыть видео и получить с него кадры

Открыть видео и получить с него кадры

Мне нужно написать стеганографическую програму, суть которой в том что в видео формата avi нужно зашифровати доковский документЯ уже перепробовала...

132
TIJ-4 метод finalize()

TIJ-4 метод finalize()

Начал свое обучение Java с книжки БЕккеля Философия Ява

247