in src/main/java/net/hydromatic/linq4j/expressions/Primitive.java [382:436]
public Object toArray2(Collection<Number> collection) {
int i = 0;
switch (this) {
case DOUBLE:
double[] doubles = new double[collection.size()];
for (Number number : collection) {
doubles[i++] = number.doubleValue();
}
return doubles;
case FLOAT:
float[] floats = new float[collection.size()];
for (Number number : collection) {
floats[i++] = number.floatValue();
}
return floats;
case INT:
int[] ints = new int[collection.size()];
for (Number number : collection) {
ints[i++] = number.intValue();
}
return ints;
case LONG:
long[] longs = new long[collection.size()];
for (Number number : collection) {
longs[i++] = number.longValue();
}
return longs;
case SHORT:
short[] shorts = new short[collection.size()];
for (Number number : collection) {
shorts[i++] = number.shortValue();
}
return shorts;
case BOOLEAN:
boolean[] booleans = new boolean[collection.size()];
for (Number number : collection) {
booleans[i++] = number.byteValue() != 0;
}
return booleans;
case BYTE:
byte[] bytes = new byte[collection.size()];
for (Number number : collection) {
bytes[i++] = number.byteValue();
}
return bytes;
case CHAR:
char[] chars = new char[collection.size()];
for (Number number : collection) {
chars[i++] = (char) number.shortValue();
}
return chars;
default:
throw new RuntimeException("unexpected: " + this);
}
}