Почему нельзя вызвать List <Number> без List <Integer>, даже если Integer расширяет Number?
Мне было интересно, почему это не возможно позвонитьList<Number>
не сList<Integer
> Даже Integer это расширенный класс абстрактного класса Number? Существует логическая ошибка, так как я мог бы вызвать метод с параметром Number также с помощью 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);
}
}
Чтобы решить это, я мог бы работать сList<?>
или жеList<? extends Number>
... так что мне не нужно решение, я хочу знать точную причину.
Единственное решение, которое я мог придумать для List - это связать Number с новым типом структуры данных.