Dúvida sobre casting

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?

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
}

}

1 curtida

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

[quote=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[/quote]
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).

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

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.

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