В чем разница между 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;
    }


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

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

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

Войти через центр авторизации
Похожие вопросы
27 янв. 2022, в 11:12
50000 руб./за проект
27 янв. 2022, в 11:06
700 руб./в час
27 янв. 2022, в 11:03
4000 руб./за проект