Dúvida na checagem da instância

5 respostas
R

Opa pessoal, blz?

Estou com uma dúvida em relação à sintaxe usada em um exercício que vi, abaixo o trecho do código:

if(p instanceof Professor)
            {
                String esp = JOptionPane.showInputDialog("Digite sua especialidade");
                String gra = JOptionPane.showInputDialog("Digite sua Titulação(Mestrado,Doutorado)");
               

                String mestrado= "mestrado";
                String doutorado= "doutorado";

                if(mestrado.equalsIgnoreCase(gra))
                    ((Professor)p).setvAula(15.0);
                else
                    if(mestrado.equalsIgnoreCase(gra))
                        ((Professor)p).setvAula(20.0);

                double vAu = ((Professor)p).getvAula();
                    
            ((Professor)p).setProfessor(esp, gra, vAu);
            }

o ((Professor)p) força a instância à ser uma instância da classe professor caso não seja, como funciona isso?

obrigado.

5 Respostas

thiago.correa

A idéia é essa, mas não diria com essas palavras, pesquise sobre “Cast” que é o nome da operação que está sendo feita!

jvictorcf

Se a classe não for do tipo Professor, seu programa vai lançar uma ClassCastException.

E

Um cast não força nada a ser algo que não é. Você não pode fazer algo como (se estiver assistindo àquela coisa chamada BigBrother: )

Homem m = new Machao();
Gay g = (Gay) m;

Isso vai ocasionar um ClassCastException na segunda linha.

jvictorcf

Excelente resposta entanglement!

R

blz, mas o que ele faz então?

Criado 31 de março de 2010
Ultima resposta 1 de abr. de 2010
Respostas 5
Participantes 4