У меня есть enum MyEnum
со значениями A
, B
, C
. Каждое из этих значений имеет размер 60 байтов (когда я записываю значение в байтовый массив).
Тогда у меня есть массив длины 3 с этими значениями перечисления. Однако размер массива зависит от значений в массиве:
import java.io.*;
enum MyEnum {
A, B, C
}
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(sizeOf(MyEnum.A)); // 60
System.out.println(sizeOf(MyEnum.B)); // 60
System.out.println(sizeOf(MyEnum.C)); // 60
MyEnum[] values = { MyEnum.A, MyEnum.B, MyEnum.C };
MyEnum[] values2 = { MyEnum.B, MyEnum.B, MyEnum.C };
MyEnum[] values3 = { MyEnum.B, MyEnum.B, MyEnum.B };
System.out.println(sizeOf(values)); // 110
System.out.println(sizeOf(values2)); // 105
System.out.println(sizeOf(values3)); // 100
}
private static long sizeOf(Object object) throws IOException {
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
ObjectOutputStream oOut = new ObjectOutputStream(bOut);
oOut.writeObject(object);
oOut.close();
return bOut.toByteArray().length;
}
}
Есть ли способ преобразовать массив значений перечисления в байтовый массив с всегда одинаковым размером? Я бы хотел, чтобы размеры values
, values2
и values3
были одинаковыми.