Разница между параметром ограниченного типа и подстановочным знаком верхней границы
Я знаю, что подобный вопрос уже был опубликован, хотя я думаю, что мой немного отличается ...
Предположим, у вас есть два метода:
// Bounded type parameter
private static <T extends Number> void processList(List<T> someList) {
}
// Upper bound wildcard
private static void processList2(List<? extends Number> someList) {
// ...
}
Насколько я знаю, оба метода принимают аргументы, которые являютсяList
типаNumber
или жеList
изподтип изNumber
.
Но в чем разница между этими двумя методами?