Fala ai pessoal, bom tem um exercicio aqui de Generics que me gerou uma dúvida.
Dado o método declarado como:
public static <E extends Number> List<? super E> process(List<E> nums)
Um programador deseja usar o método da seguinte forma:
// INSIRA AS DECLARAÇÕES AQUI!!!
output = process(input);
Quais declarações poderiam ser colocadas para permitir a compilação do codigo:
A) ArrayList
ArrayList
B) ArrayList
List
C) ArrayList
List
D) List
ArrayList
E) List
List
F) List
List
Bom galera eu entendi pelo método o seguinte, o Elemento "E" pode ser um "Number" ou algo que estenda "Number" e o retorno pode ser algo que estenda "Number" ou um "Number" e algum de seu "Supertipo". Nesse caso a resposta no livro esta B, E, F. Se eu posso passar um ArrayList para um List por argumento no método porque eu nao posso retornar um ArrayList quando o retorno é um List? A letra "C" nao esta correta nao? Porque o retorno esta List super E> ou seja se eu passar um
Grato!!!
