2010-07-04 7 views
26

간단한 문제를 해결하려고합니다. Bytes의 목록을 얻었고, 함수의 끝에서 그것을 바이트 배열로 변환하려고합니다.Java : 바이트 배열을 바이트 배열로 변환

final List<Byte> pdu = new ArrayList<Byte>(); 
.... 
return pdu.toArray(new byte[pdu.size()]);; 

컴파일러에서 내 toArray의 구문을 사용하지 않습니다. 이 문제를 해결하는 방법?

답변

40

byte[]Byte[]이 아니기 때문에 컴파일러가 마음에 들지 않습니다.

당신이 할 수있는 것은 사용입니다 commons-langArrayUtils.toPrimitive(wrapperCollection) :

Byte[] bytes = pdu.toArray(new Byte[pdu.size()]); 
return ArrayUtils.toPrimitive(bytes); 

당신이 (평민 - 랭, 배열을 통해 단순히 루프를 사용하여 값 유형 byte[]의 또 다른 배열을 채울 수없는 경우 그들은 것 자동으로 언 박싱 됨)

대신 Byte[]으로 살 수있는 경우 그대로 두십시오.

+0

감사합니다 많이! :) ArrayUtils.toPrimitive를 전에 보지 못했습니다. 아주 유용합니다. –

+1

그 커먼스 - 랭 물건에 대해 +1 –

+1

나는 ArrayUtils의 해결책을 좋아하지 않는다. Java 8에는 박스 솔루션이 있어야합니다. – JohnMerlino

1

Dollar (check this revision) 시도 :

import static com.humaorie.dollar.Dollar.* 
... 

List<Byte> pdu = ...; 
byte[] bytes = $(pdu).convert().toByteArray(); 
관련 문제