Duvida em metódos com parametros genéricos[Resolvido]

4 respostas
D

A seguinte questão do whizlabs pergunta quais deste metódos são válidas?

A. public static<X,Y extends X>boolean isPresent()
b.public <X,Y extends X> static boolean isPresent()
c.public   static boolean <X,Y extends X> isPresent()
D.nenhuma

A resposta certa é a A, mas as outras opções estão erradas somente pela declaração genérica está em lugar incorreto??

Desde já agradeço.

4 Respostas

T

Puxa, se houvesse caído uma questão dessas na minha prova, tinha rodado bonito.

De fato, conforme você pode ver, a única coisa que distingue as opções é realmente a posição da declaração.

Mas isso só pode ser respondido adequadamente se você souber de cor o parágrafo 8.4 da JLS ( http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.4 ) e entender direitinho essa língua de advogado.

Traduzindo a língua de advogado para o português, ele diz que uma declaração de método deve ter, nesta ordem:

  1. Os modificadores do método (public, static, etc.)
  2. A seguir, os parâmetros de tipos (é essa parte de <X, Y extends X> que você viu nessa declaração)
  3. Então o tipo de retorno (neste caso é o “boolean”)
  4. E por fim o nome do método, e os parâmetros.

A opção B está com a ordem 1, 2, 1, 3, 4 (ou seja, está errada), e a opção C está com a ordem 1, 3, 2, 4 (que também está errada).

ViniGodoy

[2]

Deus Salve os erros de compilação!

Lavieri

eu só sabia da resposta por pura tentativa e erro hauhaua…

ja cometi tantas vezes os erros, principalmente o da letra C, que sabia que só a A estava correta ^^

D

Obrigado, entendi.

Criado 2 de abril de 2009
Ultima resposta 2 de abr. de 2009
Respostas 4
Participantes 4