Trying to solve what should be a simple problem. Got a list of Bytes, want to convert it at the end of a function to an array of bytes.
final List<Byte> pdu = new ArrayList<Byte>();
....
return pdu.toArray(new byte[pdu.size()]);;
compiler doesn't like syntax on my toArray
. How to fix this?
The compiler doesn't like it, because byte[]
isn't Byte[]
.
What you can do is use commons-lang 's ArrayUtils.toPrimitive(wrapperCollection)
:
Byte[] bytes = pdu.toArray(new Byte[pdu.size()]);
return ArrayUtils.toPrimitive(bytes);
If you can't use commons-lang, simply loop through the array and fill another array of type byte[]
with the values (they will be automatically unboxed)
If you can live with Byte[]
instead of byte[]
- leave it that way.
Use Guava 's method Bytes.toArray(Collection<Byte> collection) .
List<Byte> list = ...
byte[] bytes = Bytes.toArray(list);
This saves you having to do the intermediate array conversion that the Commons Lang equivalent requires yourself.
Mainly, you cannot use a primitive type with toArray(T[])
.
See: How to convert List<Integer> to int[] in Java? . This is the same problem applied to integers.
try also Dollar ( check this revision ):
import static com.humaorie.dollar.Dollar.*
...
List<Byte> pdu = ...;
byte[] bytes = $(pdu).convert().toByteArray();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.