HOWTO · Java

Java의 java.lang.ClassCastException

이 문서는 Java에서 java.lang.ClassCastException을 처리하는 데 도움이 됩니다.

이 페이지의 내용

상위 클래스에서 하위 클래스의 객체로 객체를 캐스트하려고 하면 java.lang.ClassCastException이 발생합니다. 그러나 전혀 관련이 없는 두 유형 간에 개체를 변환하려고 시도하는 경우에도 발생할 수 있습니다.

이 문서는 Java의 java.lang.ClassCastException을 처리하는 데 도움이 됩니다.

Java의 java.lang.ClassCastException

아래 프로그램은 Object 유형의 객체 obb를 생성하고 객체 obb를 String 유형의 객체 shh로 지정합니다. 객체를 하위 유형으로 타입 변환하려고 할 때 객체 클래스가 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 해결

새 유형이 객체를 유형 변환하려는 클래스의 상위 클래스 중 하나에 속하는지 확인하거나 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