Given a generic array T[]
, where T extends java.lang.Number
, I would like to write the array to a byte[]
, using ByteArrayOutputStream
. java.io.DataOutput
(and an implementation such as java.io.DataOutputStream
appears close to what I need, but there is no generic way to write the elements of the T[]
array. I want to do something like
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(out);
for (T v : getData()) {
dataOut.write(v); // <== uh, oh
}
but there is no generic <T> void write(T v)
method on DataOutput
.
Is there any way to avoid having to write a whole bunch of isntanceof
spaghetti?
Clarification
The byte[]
is being sent to a non-Java client, so object serialization isn't an option. I need, for example, the byte[]
generated from a Float[]
to be a valid float[]
in C.