Mais uma questão de certificação

6 respostas
A
class Teste{
    public static void main(String[] args){
        Object obj = new Object() {
            public int hashCode(){
                return 42;
            }
        };
        System.out.println(obj.hashCode());
    }
}

O que acontece após compilar e executar o código acima?
(Seria legal justificar o porquê da resposta)

a- erro de compilação
b- erro de execução
c- compila mas não imprime nada
d- compila e imprime 42
e- nenhuma das anteriores

Obs.: essa questão é interessante… depois eu comento!

6 Respostas

D

nossa depois que vc falou que a questao era interessante…eu fiquei mais de 5 minutos olhando apra a questao…hehe

mas nao pode ser possivel…isso nao tem nada de mais…tem que ser a “letra d”…ehe

é?
se for…o que é o fato interessante?
o fato de deixar o pessoal em duvida em relação se a variavel iria emprimir o “42”…ou nao imprimir nada…“executando o metodo da superclasse que é um metodo declarado como native” ??é isso?
fiquei curioso…heh

:lol:

A

Que bom Duque que deixei você em dúvida…
Não tem nada de mais mesmo, é a letra D. :lol:
Para quem conhece este tipo de construção, fica fácil né? mas para quem ainda está começando a estudar, acho que deve ser meio estranho, você não acha?
O lance aqui é que na mesma questão, temos 3 assuntos abordados:

  • Inner classes - anônima, que é a mais chatinha
  • Polimorfismo - overriding de métodos
  • método de Object -> hashCode()
    Se bem que a questão tá fácil mesmo…
    Poderiam ter colocado um método novo que não tem em Object e que não seria acessível neste tipo de construção…
D

ufa…hehe

beleza.

é verdade…dai o cara se preocuparia com as inner classes e esqueciria de prestar atenção no overrinding de métodos…hehe

essa questão caiu na sua prova ana??

:wink:

E

Eu só fiquei na dúvida se o método int hashCode() era final em Oject…se fôsse, acho que daria erro de compilação. :oops:

V

Se o método hashCode fosse final iria tirar totalmente a liberdade do programador. Você pode querer, por exemplo, escrever seu próprio metódo hashCode para uma classe modelo no padrão Value Object para usar em uma estrutura com Set ou Map.

A

Aí é que está colocaram essa questão com 3 assuntos diferentes justamente para pegar alguém que tem ainda alguma dúvida com relação a um deles.

Sim, caiu na minha prova, assim como as outras que coloquei faz uns dias.

Criado 4 de maio de 2004
Ultima resposta 5 de mai. de 2004
Respostas 6
Participantes 4