Diferença entre o parâmetro Tipo limitado e curinga superior limitado

Eu sei que havia uma pergunta semelhante já postada, embora eu ache que a minha seja um pouco diferente ...

Suponha que você tenha dois métodos:

// Bounded type parameter
private static <T extends Number> void processList(List<T> someList) {

}

// Upper bound wildcard
private static void processList2(List<? extends Number> someList) {
    // ...
}

Até onde eu sei, ambos os métodos aceitam argumentos, que sãoList do tipoNumber ouList dosubtipo doNumber.

Mas qual é a diferença entre os dois métodos, afinal?

questionAnswers(5)

yourAnswerToTheQuestion