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

Casting de Array de Objetos

Olá, boa tarde!

Estava lendo o material do curso( 2. Declare, instancie, inicialize e use um array uni-dimensional - Array de referências ) e codificando para testar.

Fiquei com dúvida no código abaixo:

Object[] valores = new Object[2];
valores[0] = "Certificação";
valores[1] = "Java";

String[] vals = (String[]) valores;

for(Object valor : vals) {
    System.out.println(valor);
}

Não entendi muito bem a explicação do porquê o código compila. Já que: "...a classe pai de array de string não é um array de objeto, e sim, um Object (lembre-se: todo array herda de Object):" Como o compilador analisa a linha abaixo?

String[] vals = (String[]) valores;

Abs!

2 respostas
solução!

Bruno,

Quando você faz new String[], ou new Object[] você está criando um objeto do tipo Array (http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Array.html)

Essa classe Array herda de Object.

Então, quando você faz

String[] vals = (String[]) valores;

É tecnicamente a mesma coisa que você fazer

Array vals = (Array) valores;

Fica mais claro assim?

Arthur,

Obrigado pela ajuda e me desculpe pela demora em marcar o tópico como resolvido.

Li a especificação de Array que você recomendou, além da seção de construtores do livro de Certificação.

Abs.