Cara, estou estudando pra certificação e tinha exatamente essa pergunta no capitulo 7. Nenhuma das alternativas batia, resolvi procurar no google, e achei sua dúvida, sem resposta alguma
Continuei pesquisando e pelo que me pareçe é um erro do livro, a pergunta certa é:
public static List process(List nums)
note que ao invés de List<? super E> como diz o livro, a pergunta original é List
vc ia marcar logo de cara nao compila.. hehe.. entao ele quer prova se vc sabe a regra de genericos em codigos mais complexos.. hehe mata o cara. uma questao dessa eu fazia no papel como aconteceu la.. tee questao que tive que fazer linha a linha no papel.. sempre vai ter umas 2 ou 3 questoes q vai ter usar o papel, devido as pegadinhas desse tipo..
se eu tiver errado nas respostas acima me corrigam.. mais foi o que eu conseguir tirar da questao olhando.. o pq que as outras estavam erradas e essa estavam certas...
flw!!
B
busatta
Na verdade, nenhuma dessas alternativas está certa, justamente por causa do retorno:
public static List<? super E> process(List nums)
O tipo de retorno está muito genérico…
G
gk-bgh
anderson.bonavides:
Dado um metedo declarado como:
public static List<? super E> process(List nums)
Um progrma deseja usar esse método da seguinte forma:
//INSIRA AS DECLARAÇÕES AQUI.
output = process(input);
a) ArrayList input = null;
ArrayList output = null;
b) ArrayList input = null;
List output = null;
c) ArrayList input = null;
List output = null;
d) List input = null;
ArrayList output = null;
e) List input = null;
ArrayList output = null;
e) List input = null;
List output = null;
B, E e F estão correas.
Alguêm poderia me dar uma força, não entendi a conclusão da resposta.
Galera: E extends Number. List<? super E> quer dizer que o retorno tem que ser do tipo NUMBER.
eliminando assim as respostas a, b, d, f.
as respostas corretas são c , e
[]s
Gunnar
B
busatta
impossivel!!! faça o teste e tente compilar, você com certeza não vai conseguir…
G
gk-bgh
Fiz alguns testes…
não sei porque não funciona. Mas o problema é com a declaração de output.
Se o output for declarado sem usar Generics funciona.
Eu, na prova, marcaria as opções (c , e) de qualquer forma. E pode ser de QUALQUER tipo. E só tem uma super classe comum a todos os Objetos…a classe OBJECT. Só que se tentar declarar List output = null; não compila. Só funciona se não usar Generics para output…(o que é o mesmo que List output).
[]s
Gunnar
B
busatta
Na verdade a unica resposta plausivel seria List<?> l = output ou List l = output, como voce disse
Mais o que aconteçe é que essa pergunta está no livro da Kathy Sierra. Segundo o livro a resposta certa seria as alternativas B, E e F. O QUE É UMA MENTIRA.
Caso você leia a o topico desde o começo, verá que a discussão é justamente sobre isso, um erro do livro, nenhuma dessas alternativas está correta. Segundo informações a pergunta certa seria:
public static [color=red]List[/color] process(List nums)
O Problema é com a PERGUNTA, não com as respostas
anderson.bonavides
Depois de muito estudar e analizar consegui compreender onde tava o erro. É verdade o erro se econtra na sintaxe do método e não nas respostas.