Warum kann List <Number> nicht mit List <Integer> aufgerufen werden, auch wenn Integer Number erweitert?

Ich habe mich gefragt, warum es nicht möglich ist anzurufenList<Number> nicht mitList<Integer> even Integer ist eine erweiterte Klasse der abstrakten Klasse Number? Es liegt ein logischer Fehler vor, da ich eine Methode mit dem Parameter Number auch mit Integer aufrufen könnte.

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);
}
}

Um es zu lösen, könnte ich damit arbeitenList<?> oderList<? extends Number>... damit ich nicht die Lösung brauche, möchte ich den genauen Grund wissen.

Die einzige Lösung, die ich mir für List vorstellen kann, ist die Bindung an Number als neuen Typ von Datenstruktur.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage