자바 ClassCastException 에러 원인

자바(Java)에서 ClassCastException 에러는 특정 클래스의 객체를 호환되지 않는 다른 클래스의 객체로 변환하려고 할 때 발생하는 런타임 에러입니다.

 

cast란 한 타입의 값을 다른 타입으로 변환하는 걸 의미합니다. 큰 데이터 타입을 작은 데이터 타입으로 변환하거나, 부모 클래스의 객체를 자식 클래스 타입으로 변환하는 등의 작업입니다.

 

그런데 자바는 타입 안전성을 갖는 언어이기 때문에 타입 변환이 불가능한 경우 런타임 환경에서 ClassCastException을 발생시킵니다. 예를 들어, dog라는 클래스의 객체를 cat이라는 클래스의 객체로 변환하려고 하면 예외가 발생하는 식입니다.

 

Integer 타입의 객체를 String 타입의 객체로 캐스팅하는 경우에도 ClassCastException이 발생할 것입니다.

 

예를 들어, 아래와 같이 castExample()이라는 메서드를 만들었습니다. Integer 타입의 객체를 String 타입의 객체로 캐스팅하는 코드입니다.

public static void castExample() {
    Object i = Integer.valueOf(42);
    String s = (String) i;
}

 

그런 다음, 이 메서드를 호출하는 main 메서드를 정의했습니다.

public static void main(String[] args) {
    castExample();
}

 

만약 런타임에서 이 메서드가 호출되면 아래와 같은 형태로 에러가 발생할 것입니다. Integer는 String으로 캐스팅될 수 없으며, 이는 castExample 메서드가 호출된 3번째 라인에서 발생했다는 메시지입니다.

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
    at YourClassName.castExample(YourClassName.java:3)
    at YourClassName.main(YourClassName.java:7)

 

이처럼 ClassCastException이 발생하면 해당 예외가 발생하는 클래스 및 메서드의 라인에서 cast가 불가능하게 코딩되었는지 확인이 필요합니다.

반응형

댓글

Designed by JB FACTORY