Различный размер сериализованного массива значений перечисления в Java - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть 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 были одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...