Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida do Vídeo 1 na Aula 2

Queria saber porque foi impresso no Console os nomes Mario e Guilherme aos 13m:40s do Vídeo 1 da Aula 2?

Sei que Strings são Objects, mas, ao fazer o foreach são impressos o nomes, sendo que o toString padrão de Object imprime o nome da classe, @ e um hexadecimal, conforme a implementação padrão.

Por que foi impresso os nomes e não a implementação padrão da Object?

2 respostas
solução!

Olá Carlos,

Ai vem a questão sobre o tipo do objeto. A variável em si pode até ser do tipo Object[] objetos, porém quando os objetos foram criados {"Mario", "Guilherme"} eles são do tipo String. Ou seja, a variável Object só faz referência para o objeto String. E quando invocamos um método a implementação usada é a do tipo do objeto, não da variável. Como o objeto é uma String, ao chamar o toString() para fazer o println, ele usa o toString() da classe String, que sobrescreve o comportamento padrão e imprime na verdade o conteúdo dentro da String. Neste link tem a documentação do método toString da classe String no java 8.

Obrigado Lucas!

Agora entendi o que aconteceu :)