Por que não é possível chamar List <Number> não com List <Integer> mesmo se Integer estender Number?

Eu estava me perguntando por que não é possível ligarList<Number> não comList<Integer> mesmo Integer é uma classe estendida da classe abstrata Number? Há um erro lógico como eu poderia chamar um método com o parâmetro Number também com Integer.

public class Que
{

public void enterNumbers(List<Number> nummern)
{
    for (Number number : nummern)
    {
        System.out.println(number + "\n");
    }
}

public void enterNum(Number num)
{
    System.out.println("This is a number " + num);
}

public static void main(String[] args)
{
    Que que = new Que();

    Integer myInteger = new Integer(7);
    // possible (of course!)
    que.enterNum(myInteger);

    List<Integer> num = new ArrayList<Integer>();
    num.add(4);
    num.add(45);
    Integer inte = new Integer(333);

    num.add(inte);
    // not possible ! 
    que.enterNumbers(num);
}
}

Para resolvê-lo eu poderia trabalhar comList<?> ouList<? extends Number>... então eu não preciso da solução, eu quero saber o motivo exato.

A única solução que eu poderia pensar em List é ligar com Number como um novo tipo de estrutura de dados.

questionAnswers(2)

yourAnswerToTheQuestion