ClassCastException
日本語 | 型変換例外 |
英語 | class cast exception |
ふりがな | くらすきゃすとえくせぷしょん |
フリガナ | クラスキャストエクセプション |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.lang.ClassCastException。
例外の一種。ダウンキャストした際に、キャストできない型にキャストしようとした場合、つまり実際のインスタンスもしくはそのスーパークラス以外の型にキャストしようとした場合に投げられる。
RuntimeExceptionクラスのサブクラスであるため、明示的にcatchやthrows指定する必要はない。むしろ、適切な型にキャストすれば決して発生しない例外であり、絶対に発生しないようにしなければならない。
極論を言えば「ダウンキャストを全く行わなければ決して発生しない」例外である。そもそもダウンキャストが必要な場面は少なく、ダウンキャストを多用するようなプログラムは危険とも言える。
しかし、ArrayListクラスやHashMapクラスの使用、画面側とのデータの変換、フレームワークによる共通化等により必要な場合もあり、結合テスト時にClassCastExceptionが発生しまくるという「ClassCastException地獄」が起こることもある。
例外の一種。ダウンキャストした際に、キャストできない型にキャストしようとした場合、つまり実際のインスタンスもしくはそのスーパークラス以外の型にキャストしようとした場合に投げられる。
RuntimeExceptionクラスのサブクラスであるため、明示的にcatchやthrows指定する必要はない。むしろ、適切な型にキャストすれば決して発生しない例外であり、絶対に発生しないようにしなければならない。
極論を言えば「ダウンキャストを全く行わなければ決して発生しない」例外である。そもそもダウンキャストが必要な場面は少なく、ダウンキャストを多用するようなプログラムは危険とも言える。
しかし、ArrayListクラスやHashMapクラスの使用、画面側とのデータの変換、フレームワークによる共通化等により必要な場合もあり、結合テスト時にClassCastExceptionが発生しまくるという「ClassCastException地獄」が起こることもある。
参考サイト
// Sample.java
public class Sample
{
public static void main( String[] args )
{
try
{
// ClassCastExceptionを投げます。
Object object = new Integer( 100 );
String string = (String)object;
}
catch( ClassCastException e )
{
// 投げられたClassCastExceptionを拾いました。
e.printStackTrace();
// java.lang.ClassCastException
// at Sample.main(Sample.java:10)
}
}
}
public class Sample
{
public static void main( String[] args )
{
try
{
// ClassCastExceptionを投げます。
Object object = new Integer( 100 );
String string = (String)object;
}
catch( ClassCastException e )
{
// 投げられたClassCastExceptionを拾いました。
e.printStackTrace();
// java.lang.ClassCastException
// at Sample.main(Sample.java:10)
}
}
}
// Sample.java public class Sample { public static void main( String[] args ) { try { // ClassCastExceptionを投げます。 Object object = new Integer( 100 ); String string = (String)object; } catch( ClassCastException e ) { // 投げられたClassCastExceptionを拾いました。 e.printStackTrace(); // java.lang.ClassCastException // at Sample.main(Sample.java:10) } } }