java.lang.ClassCastException(java強制型変換異常)

1013 ワード

ClassCastExceptionは、文字通りタイプ変換エラーであり、通常は強制タイプ変換を行う際に発生するエラーである.次にClassCastException異常が発生した原因を分析し,この異常の解決方法を提示する.この異常はどのように発生したのでしょうか.イメージを比較した例を挙げます.Animalは動物、Dogは犬、動物の子、Catは猫、動物の子です.次のコードを見てください.
Animal a1 = new Dog();  // 1
Animal a2 = new Cat();  // 2
 
Dog d1 = (Dog)a1;         //3
Dog d2 = (Dog)a2;        //4

3行目のコードと4行目のコードはほぼ同じで、文字通り動物(Animal)を強制的に犬(Dog)に変換しますが、4行目のコードはjava.lang.ClassCastExceptionを生成します.猫を(a 2この動物は猫)を犬に変換し、3行目は犬を犬に変換しているので可能です.上記の例からjava.lang.ClassCastExceptionは強制タイプ変換を行う際に発生する異常で、強制タイプ変換は親参照が指す対象のタイプが子である場合に強制タイプ変換を行うことが前提ですが、親参照が指すオブジェクトのタイプがサブクラスでない場合javaが生成されます.lang.ClassCastException異常.上のa 1とa 2は動物ですが、a 1は犬で、a 2は猫なので、a 1を犬に変えることができます.a 1自体が犬で、a 2は猫なので、犬に変えるのは間違いです.このような異常に遭遇した場合、どのように解決しますか?アクセスするオブジェクトの特定のタイプを知っている場合は、そのタイプに直接変換します.タイプが特定できない場合は、以下の2つの方法で処理することができる(オブジェクトをoと仮定する):1、o.getClass()を通過する.getName()は、このタイプを出力文で出力し、タイプに応じて具体的な処理を行う特定のタイプを得ることができます.2、if(o instanceofタイプ)の文でoのタイプが何であるかを判断する.
注意:つまり親子関係を持ってこそ転換することができ、兄弟関係のものはできない.