В чем разница между bounded wildcards и parameterized types в Java?

Поясните, пожалуйста, разницу между
public static double sum(List<? extends Number> list){
        double sum = 0;
        for(Number n : list){
            sum += n.doubleValue();
        }
        return sum;
    }
и
public static <T  extends Number> double sum(List<T> list){
        double sum = 0;
        for(Number n : list){
            sum += n.doubleValue();
        }
        return sum;
    }


Разве эти два метода не эквивалентны?
  • Вопрос задан
  • 3789 просмотров
Решения вопроса 1
Эквивалентны. Но в общем случае, использование generic wildcards оправдано тогда, когда наш метод не зависит от типа (в т.ч. не вызывает методы, зависящие от типа). Когда же нам нужно использовать параметр типа (например, при добавлении элементов) используем второй вариант.

Source: docs.oracle.com/javase/tutorial/extra/generics/wil...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы