2011-09-12 3 views
0

좋은 오후 내 시간대.메시지 배열에 캐스팅

나는 "간단한"질문이 있습니다.

나는 ArrayList를 가지고 있지만이 ArrayList를 ArrayList 객체의 toArray 메서드를 사용하여 배열로 변환하고 Message []로 형변환하면 java.lang.ClassCastException이 발생한다.

List<Message> messageList = new ArrayList<Message>(); 
    --code to fullfill the List 
    (Message[]) messageList.toArray(); 

예외 예외 : 메시지 클래스가 "javax.mail.Message"코드의 코드 조각 패키지에 속하는 스레드에서 예외를 "주"java.lang.ClassCastException가 : [Ljava.lang.Object ; [Ljavax.mail.Message;

왜 이런 일이 일어 났는지 설명 할 수 있습니까? 가장 관련

답변

1

당신은 Message의 배열을 생성해야하고으로써 toArray 전달할를(). you are calling 메서드는 Object 배열을 반환하므로 클래스 캐스트 예외가 발생합니다. 두 번째 객체가 첫 번째 객체까지 확장 된 경우에도 한 객체 유형의 배열을 다른 객체 유형의 배열로 캐스트 할 수 없습니다.

Message[] messages = new Message[messageList.size()]; 
messageList.toArray(messages); 

를 점검 Object 비록 here

0

toArray() 방법으로

은 주조 될 수 없다 Object[] 유형의 어레이를 생성한다. 올바른 유형의 배열을 만들려면 유형은 사용하는 toArray() 방법 알려 주어야 :

(Message[]) messageList.toArray(new Message[messageList.size()]); 
2

이 (때로는) Message로 주조 할 수있는 문서의 모든 객체가 메시지 경우에도 귀하의 경우와 같이, 메시지의 배열에 객체의 배열을 캐스팅 할 수 없습니다.

ArrayList<Object>ArrayList<Message>으로 전송할 수 없다는 점은 비슷하지만 같지 않습니다.

toArray(T[]) 방법을 고려하십시오.