Dúvida sobre casting

6 respostas
iars

Bom dia a todos do GUJ!!!
Eu sou novato em java, estou no 1° período de BSI e tenho uma dúvida sobre o uso do casting. Tem como usar diretamente na leitura da entrada do Scanner ouisso só se aplica a variáveis ja definidas anteriormente?

6 Respostas

Demys_Cota

Um casting acontece quando vc tem uma referencia de uma super class e que passa-la para uma sub class

Veja esse exemplo.

Class Animal{}

Class Dog extends Animal{}

Class testOO{

public static void main(String [] args){
      Animal animal = new Dog();
      Dog dog = (Dog) animal;  <--- isso é um casting
}

}
fabiomariner

outro exemplo é:

List<String> lista = new ArrayList<String>();

através da variável de referência lista vc tem acesso aos métodos de list q foram sobrescritos na classe ArrayList.

dessa outra forma:

ArrayList<String> listaMaisAbrangente = (ArrayList<String>) lista; //casting

vc pode acessar todos os métodos de ArrayList (através da variável listaMaisAbrangente) mesmo os que não foram declarados em List<>

me corrijam se eu estiver errado

Rodrigo_Sasaki

fabiomariner:
outro exemplo é:

List<String> lista = new ArrayList<String>();

através da variável de referência lista vc tem acesso aos métodos de list q foram sobrescritos na classe ArrayList.

dessa outra forma:

ArrayList<String> listaMaisAbrangente = (ArrayList<String>) lista; //casting

vc pode acessar todos os métodos de ArrayList (através da variável listaMaisAbrangente) mesmo os que não foram declarados em List<>

me corrijam se eu estiver errado


Não está errado não, só o listaMaisAbrangente que ficou confuso, acho que seria melhor listaMaisEspecifica ou algo do tipo.

E é importante lembrar que o casting não converte nada. O objeto permanece do mesmo tipo que já era, só o tipo da variável de referência que é alterado (se for possível fazer o casting).

thiago_pco

Lembrando também o uso do instanceof antes dos Casts, evitando erros não esperados.

iars

Bom dia galera. Entendi. Como falei antes, estou iniciando no java, então vou ter que estudar um pouco mais pra surgirem outras dúvidas, mas esta eu entendi.

Rodrigo_Sasaki

Sem problemas, o GUJ tá aqui pra isso :slight_smile:

Criado 5 de maio de 2013
Ultima resposta 8 de mai. de 2013
Respostas 6
Participantes 5