Ajuda com uma pergunta simulado SCJP

5 respostas
Jeferson_Manetti

olá estava fazendo um simulado pra SCJP…

e encontrei uma pergunta na qual não concordei muito com a resposta…

eis a pergunta: observe o seguinte codigo e marque a alternativa correta…

List <? extends String> list = new ArrayList <String > ();
for ( Object o : list )
{
   System.out.println(o);
}

// possiveis respostas.

A - Compile error.

B - Runtime error.

C - Nothing can be added to list.

D - Only a String reference can point to list. Hence a String reference is
requerid in the loop.

E - Nome of the above.

// resposta correta (segundo o simulado):
The correct answer is C.
You can always use an object to point to this list.
Since the “?” wild character is present in the declaration,
nothing can be added to the List.

// minha resposta
respsota A esta correta.
Não podemos extends a Classe String… em List <? extends String>
portanto daria um erro do Compilador

bom é isso que eu acho…

alguem ai poderia me explicar melhor esta questão?
o pq ele escolheu a letra C como resposta correta?

desde já agradeço…

Jeferson

5 Respostas

robinsonbsilva

Jovem…boiei também!

Veja se da uma luz:

souzaJr
Eu acho que isso aqui aceita tudo que É UM String.

Eu acho que isso aqui aceita tudo que É UM String.

Jeferson_Manetti

bom eu sei q…

se fose assim: <? extends Number>

receberia Number ou td q fosse subclasse de Number (“é um Number”), tipo Double, Integer…

no caso nunca existiria um “é um” para String, pois String e Classe Final, estou Certo?

mas fiquei perdidão XD

rodrigo.ferreira

E aí Jefferson, blzera ?

É o seguinte, a resposta correta realmente é a C .

Generics é algo muito doido, que, às vezes, parece fugir da lógica do Java, em sí; porém, a explicação é a seguinte:

quando você usa o coringa <? [b]extends[/b] CLASSE>, VOCÊ [b]NÃO PODE[/b] ADICIONAR NADA AO CONJUNTO.
      quando você usa o coringa <? [b]super[/b] CLASSE> VOCÊ [b]PODE[/b] ADICIONAR ALGO AO CONJUNTO.

Quanto ao termo “extends” nesse caso, ele serve para A PRÓPRIA CLASSE ou CLASSES QUE A ESTENDAM, ou seja, NADA PODE ESTENDER STRING, mas, STRING É UMA STRING, por isso, ele é aceitável e o compilador ACEITARÁ O TERMO SEM PROBLEMAS.

Espero ter ajudado !
Grande abraço,
Até,
Rodrigo Lopes.

Jeferson_Manetti

Iaew blz Rodrigo!!!

pow valeu a explicação… agora eu entendi… XD

realmente isso e muito loko XD

buscando no “Mestre” google encontrei essa discussão no Forum Java ranch!!!

segue link: http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=24&t=043884

espere q este topico tambem ajude outras pessoas ^^

obrigado por tds aqueles q resposnderam, ou tentaram responder, ou ate mesmo pensou em uma resposta, ou aqueles q leram o Topico… enfim XD

at.,

Jeferson

Criado 30 de outubro de 2008
Ultima resposta 30 de out. de 2008
Respostas 5
Participantes 4