Java에서 ClassCastException을 해결하는 방법은 무엇입니까?

Java Eseo Classcastexception Eul Haegyeolhaneun Bangbeob Eun Mueos Ibnikka



자바에서는 ' ClassCastException ”는 개발자가 개발 단계 초기에 유형 호환성 문제를 파악할 수 있도록 하여 런타임에 유형 호환성 문제를 식별하는 데 도움이 됩니다. 또한 형식 안전성을 보장하여 프로그램의 불일치를 방지합니다. ClassCastException은 디버깅, 테스트, 올바른 유형 캐스팅 등의 과정에서 많은 도움이 됩니다.

이 가이드는 Java에서 ClassCastException을 해결하는 절차를 보여줍니다.







Java에서 ClassCastException이 어떻게 발생합니까?

ClassCastException ”는 적절한 유형 캐스팅을 보장하고 호환되지 않는 유형 변환으로 인한 런타임 오류를 방지합니다. 간단히 말해서 이 예외는 개체를 호환되지 않는 형식으로 캐스팅하려고 시도할 때 발생합니다.



예를 들어 '에 대한 아래 코드를 방문하십시오. ClassCastException ” 자바에서:



수입 java.io.* ;
수입 java.lang.* ;
수입 java.util.* ;

수업 리눅스힌트 {
//드라이버 클래스 생성
공공의 공전 무효의 기본 ( [ ] 인수 )
{
노력하다 {
물체 부모의 = 새로운 물체 ( ) ;

어린이 = ( ) 부모의 ;
체계 . 밖으로 . 프린트 ( 어린이 ) ;
}
잡다 ( 예외 에프 ) {
체계 . 밖으로 . 프린트 ( 에프 ) ;
}
}
}

위 코드에 대한 설명:





  • '에서 노력하다 ” 블록, 객체의 인스턴스 “ 부모의 '를 사용하여 선언합니다. 새로운 ” 키워드.
  • 그 후, typecasting이 활용됩니다. 물체 ” 유형이 형변환되고 있으며 이름이 “ 어린이 '.
  • 이 유형 변환은 부모 클래스가 자식 클래스로 유형 변환되어서는 안 된다는 규칙을 위반하는 것입니다. 그렇기 때문에 예외가 발생하는 이유는 ' 물체 ” 유형은 부모 클래스입니다.
  • 결국 “ 잡다 ” 블록은 “ 예외 ”를 매개변수로 콘솔에 메시지를 출력합니다.

실행 단계 종료 후:



위의 스냅샷은 Java에서 ClassCastException 발생을 보여줍니다.

Java에서 ClassCastException을 해결하는 방법은 무엇입니까?

개발자가 ' ClassCastException ” 자바에서.

이러한 솔루션은 아래에 별도로 설명되어 있습니다.

솔루션 1: 'instanceof' 연산자 사용

대신에 ' 연산자는 ' 물체 ”는 원하는 유형의 인스턴스인지 여부입니다. 이 검증은 ' ClassCastException '. 예를 들어 아래 코드 블록을 방문하십시오.

공공의 수업 TypeCheckingLinux힌트 {
공공의 공전 무효의 기본 ( [ ] 인수 ) {

물체 부모의 = '리눅스힌트 패밀리' ;
만약에 ( 부모의 대신에 ) {
어린이 = ( ) 부모의 ;
체계 . 밖으로 . 프린트 ( '문자열을 형 변환한 후: ' + 어린이 ) ;
} 또 다른 {
체계 . 밖으로 . 프린트 ( 'Object는 원하는 유형 String의 인스턴스입니다.' ) ;
}
}
}

위 코드에 대한 설명:

  • 먼저 “ 부모의 ” 내부에 더미 값으로 초기화된 객체가 생성됩니다. 노력하다 ' 차단하다.
  • 그런 다음 '만약에' 대신에 ' 연산자는 '의 인스턴스를 확인하는 데 사용됩니다. 부모의 ” 원하는 객체 ' 유형.
  • 다음으로 조건이 ' 진실 ” typecasting이 수행되어 콘솔에 표시됩니다.
  • 그렇지 않으면 사용자 지정 오류 메시지가 콘솔에 표시됩니다.

실행 단계 종료 후:

스냅샷은 typecasting이 성공적으로 완료되었고 ClassCastException이 ' 대신에 ' 운영자.

해결 방법 2: Typecasting 작업 검토 및 수정

또 다른 해결책은 코드를 여러 번 확인하고 호환되는 유형 변환 유형을 검토하는 것입니다. 예를 들어, ' ClassCastException ”는 typecasting에 대해 호환되지 않는 원하는 유형으로 인해 체포됩니다.

공공의 수업 TypeCheckLinux힌트 {
공공의 공전 무효의 기본 ( [ ] 인수 ) {
물체 부모의 = '리눅스힌트 패밀리' ;
정수 변환된 숫자 = ( 정수 ) 부모의 ;
체계 . 밖으로 . 프린트 ( '타입 캐스팅 후 번호: ' + 변환된 숫자 ) ;
}
}

위의 코드에서 프로그래머는 ' ' 에게 ' 정수 '.

컴파일 단계 종료 후:

위의 스냅샷은 ClassCastException 발생을 보여줍니다.

해결 방법 3: 제네릭 사용

프로그래머는 ' 제네릭 ” 예상 유형을 지정하고 컴파일 시간에 유형 안전성을 강화합니다.

예를 들어 아래 코드를 방문하십시오.

수입 java.util.ArrayList ;
수입 java.util.List ;

공공의 수업 usingGenerics {
공공의 공전 무효의 기본 ( [ ] 인수 ) {
목록 < > 직원 이름 = 새로운 배열목록 <> ( ) ;
empName.empName 추가하다 ( '괴롭히다' ) ;
empName.empName 추가하다 ( '도공' ) ;

초기의 = empName.empName 얻다 ( 0 ) ;
결정적인 = empName.empName 얻다 ( 1 ) ;

체계 . 밖으로 . 프린트 ( '이름: ' + 초기의 ) ;
체계 . 밖으로 . 프린트 ( '두 번째 이름: ' + 결정적인 ) ;
}
}

위 코드에 대한 설명:

  • 먼저 필요한 유틸리티를 Java 파일로 가져오고 ' usingGenerics '라고 선언합니다.
  • 다음으로 “ 배열목록 ' 유형의 ' '라는 이름으로 선언됩니다. 직원 이름 ” 두 개의 더미 데이터 요소를 제공하여 초기화됩니다.
  • 그런 다음 '라는 두 개의 문자열 유형 변수를 만듭니다. 초기의 ' 그리고 ' 결정적인 '. 그런 다음 인덱스 번호에 액세스하여 값을 할당합니다.
  • 마지막으로 두 변수를 모두 표시하여 결과를 확인합니다.

실행 종료 후 출력은 다음과 같습니다.

위의 스냅샷은 제네릭을 사용하여 typecasting이 수행되었음을 보여줍니다.

결론

'를 해결하기 위해 ClassCastException ” Java에서 프로그래머는 적절한 유형 호환성을 보장해야 합니다. 제네릭 ' 그리고 ' 대신에 ' 운영자. 예외를 해결하려면 프로그래머가 적절한 형식 호환성을 보장하여 캐스팅 작업을 검토하고 수정해야 합니다. 게다가 이 ' ClassCastException '를 사용하여 피할 수 있습니다. 제네릭 ” 및 “ 대신에 ' 운영자. 이 가이드는 Java에서 ClassCastException을 해결하는 방법을 설명했습니다.