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.