Ola pessoal tudo bem ? Como muitos de voces, estou estudando muito pra tirar a certificacao, e estou adotando o livro da k.sierra em ingles. Notei que as questoes sao muito dificeis, entao li o livro 2x e revisei todos os exercicios. Notei tb que alguns exercicios nem seguer compilam no meu eclipse, ou seja, vi que tem alguns problemas. Pra quem esta estudando pelo livro, ja deve ter se deparado com essa questao de generics: tente vc responder , a resposta do livro esta no final !
Questions:
…
- Given a method declared as:
public static List<? super E> process(List nums)
A programmer wants to use this method like this:
// INSERT DECLARATIONS HERE
output = process(input);
Which pairs of declarations could be placed at // INSERT DECLARATIONS HERE to allow the code to compile? (Choose all that apply.)
A ArrayList input = null;
ArrayList<Integer> output = null;
B ArrayList input = null;
List<Integer> output = null;
C ArrayList input = null;
List<Number> output = null;
D List input = null;
ArrayList<Integer> output = null;
E List input = null;
List<Number> output = null;
F List input = null;
List<Integer> output = null;
RESPOSTA :
B, E, and F are correct.
The return type of process is definitely declared as a List, not an ArrayList, so A and D are wrong. C is wrong because the return type evaluates to List, and that can’t be assigned to a variable of type List. Of course all these would probably cause a
NullPointerException since the variables are still null—but the question only asked us to get the code to compile. (Objective 6.4)
Tentem colocar isso no eclipse. De todo jeito que eu coloco, ate alterando algumas coisas , o codigo simplesmente nao compila com essas alternativas, sugerindo : fazer um cast de modo q fica output = (cast)process(input); , ou entao, trocar a sintaxe <? extends …> pelo <…> apenas, ou outras coisas, mas do jeito que esta ai nao funciona.
Alguem sabe o porque disso, é erro do livro ou equivoco meu mesmo ?
Abraco a todos !