0

코드에서 ClassCastException을 수신했습니다. 처음에는 refreshDetailVOTable 메서드가 Set 만 가져올 것이므로 Objective는 Set을 List로 변환하는 것이 었습니다. 이 문제는 Set to List를 변환 할 때 발생할 수 있습니다. refreshDetailVOTable이 잘못된 List를 취하여 ClassCastException을 수신하는 이유입니다.이벤트 발송 중 예외가 발생했습니다. JRE 1.4 환경의 java.lang.ClassCastException

나는 모든 원시 유형을 사용하고있다 : 조사시

, 그것은 것을 발견했다. 대신 제네릭을 사용해야합니다. 컴파일시 이러한 종류의 오류를 찾는 데 도움이됩니다. 이 방법은 매개 변수 목록 detailIRsToDelete을 받고

나는 반복자를 가지고 그래서 같은 요소를 반복되는 : 따라서 ClassCastException를 받고, 실수로 detailIRsToDelete로의 IdentifiableReference 아닌 다른 뭔가를 넣어 수도

  for (Iterator iDetails = detailIRsToDelete.iterator(); iDetails.hasNext();) { 
      IdentifiableReference detailIR = (IdentifiableReference) iDetails.next(); 

루프 내의 할당 문에서.

List <IdentifiableReference> detailIRsToDelete

이 목록에 물건을 넣는 행위는 컴파일러에 의해 확인 될 것이고, 오류가 잘못된 개체가 있던 지점에서 발생한다 :로

목록 매개 변수

는 선언해야 컴파일 된 시간에 나중에 런타임에 런타임에 대신 추가됩니다.

문제 :이 다음 클래스 캐스트 예외를 해결해야하지만, 이것은 우리가 업그레이드에서 JRE 1.4 제쳐에 대한 해결 방법이 있나요 1.4

입니다 현재 JRE에 적용 할 수 없습니다?

+0

을 캐스팅하기 전에 instanceof를 사용할 수 있습니다. 적어도 오류가있는 곳을 알려줄 것입니다. 그러나 1.4에서 업그레이드해야합니다. 당신은 약간의 시간을해야 할 것이며 적어도 여기에는 그럴듯한 동기가 있습니다. – EJP

답변

-1

당신은 일시적 어쨌든에서 제네릭 퍼팅 가치가있을 수도 있습니다 그 목록은 장소의 작은 충분한 숫자를 사용하는 경우

Object o = iDetails.next(); 
if(o instanceof IdentifiableReference) 
    IdentifiableReference detailIR = (IdentifiableReference)o; 
+0

아이디어는 문제가 발생했을 때이를 무시하지 않고 문제를 찾는 것입니다. – EJP