HOWTO · Java

Java の java.lang.ClassCastException

この記事は、Java で java.lang.ClassCastException を処理するのに役立ちます。

このページの内容

親クラスから子クラスのオブジェクトにオブジェクトをキャストしようとすると、java.lang.ClassCastException が発生します。 ただし、まったく関係のない 2つの型の間でオブジェクトを変換しようとすると、スローされることもあります。

この記事は、Java の java.lang.ClassCastException を処理するのに役立ちます。

Java の java.lang.ClassCastException

以下のプログラムは、Object 型のオブジェクト obb を作成し、オブジェクト obb を String 型のオブジェクト shh に型付けします。 Object クラスが Java.ClassCastException のすべてのクラスの親クラスであることがわかっているため、オブジェクトをその子型に型キャストしようとすると、Java.lang になります。

コード - classCast.java:

public class classCast {
  public static void main(String[] args) {
    try {
      Object obb = new Object();

      String shh = (String) obb;

      System.out.println(shh);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

出力:

java.lang.Object は java.lang.String にキャストできません

Java で java.lang.ClassCastException を解決する

新しい型が、オブジェクトを型キャストしようとしているクラスの親クラスの 1つに属していることを確認するか、親オブジェクトをその子型に型キャストしないようにして、ClassCastException の発生を防ぎます。 コンパイル時の検証を提供するジェネリックを使用して、コレクションの利用中に ClassCastException を防ぐことができます。

RuntimeException 子クラスであるため、未チェックの例外です。 親オブジェクトを子型に型キャストしたり、オブジェクトをインスタンスではないサブクラスに型キャストしたりする場合など、コースをある型から別の型に不適切に型キャストしようとすると、JVM はこの例外を自動的に発生させます。

コード - classCast.java:

package classcaste;

public class classCast {
  public static void main(String[] args) {
    try {
      String shh = "shiv";
      Object obb = (Object) shh;

      System.out.println(obb);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

出力:

shiv