Pessoal por acaso poderia criar uma castException dentro de uma classe normal? e usar o throws pra disparar ela? Eu estava estudando cast e pareceu esta duvida. por que existe dois tipos de cast o implicito e o explicito. A função da castException poderia ser de negar o compilador a compilar corretamento o codigo?
Grato…
Cast e Exception
2 Respostas
Ola,
Bom, deixa eu ver se respondo as tuas dúvidas:
1-> Por que existe o cast explicito e o implicito? Simples, em java existe uma hierarquia de classes e um conjunto de tipos primitivos, nos primitivos alguns são meio que 'estenções' dos outros, tais como o int e byte, mas o cast implicito acontece quando o compilador consegue 'entender' o que vc esta fazendo e pela hierarquia consegue provar que aquilo é possível. ex.:byte b = 12;
int i = b;//cast implicito, ou
javax.swing.JFrame xframe = new javax.swing.JFrame("Eu");
java.awt.Frame awtFrame = xframe;//cast implicito
Nos dois exemplos acima acontece o que te falei... eu to partindo de tipos específicos para tipos mais "genericos", se vc olhar a especificação verá que o javax.swing.JFrame estende o java.awt.Frame, e que dentro de um int cabe um byte, neste caso em relação a bits que um e outro tem...
Bom para que inventaram então o cast explicito?! para quando vc quizer que o compilador converta algo que ele não tem certeza que vai dar certo, como nos casos anteriores, mas que vc sabe que dará, como exemplo.:
Object frame = new javax.swing.JFrame("Eu de novo");
java.awt.Frame awtFrame = (java.awt.Frame) frame;// se vc não colocar o cast o compilador reclama.
//ou
float f = 1.0F;
int i = (int) f;// neste caso ele 'perde' a parte fracionária.
Sacou sobre cast explicito e implicito?
Agora, função castException?! saquei esta dúvida não... poderia explicar melhor?
Só pra complementar,
A exception java.lang.ClassCastException ocorre quando vc tenta, com cast explícito, converter um objeto, ou valor, em outro que não é possível… por exemplo:
Object str = "Ola ClassCastException";
javax.swing.JFrame frame = (javax.swing.JFrame) str;// aqui vai ocorrer uma ClassCastException
Entendeu?! onde eu estou convertendo a String para JFrame vai ocorrer a exception, pois a variável não é uma instancia de JFrame.