首页 > 解决方案 > Java中不同大小的枚举值序列化数组

问题描述

我有枚举MyEnumA,,,BC每个值的大小为 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相同。values2values3

标签: javaarraysenums

解决方案


推荐阅读