让我上一堂简单的课
public class A
{
public int a;
public int b;
public byte c;
public byte d;
public B e;
public C f;
public byte[] g = new byte[5];
}
有没有办法不用手工将其转换为字节数组?结果数组中需要相同顺序的字段,字节数组中不允许有其他信息,只有字段值。
最佳答案
如果您喜欢使用反射,则无法保证检索字段的顺序。
所以你可以使用两种方法:
- 对字段进行 lexycally 排序
- 使用序列化中该字段的顺序为每个字段添加注释
请注意,对于数组序列化,您必须知道数组的长度或使用定界符来表示数组的结尾。在您示例的简单情况下,不需要这样做,因为您只有 1 个数组。如果您有多个可变长度变量(例如字符串或数组),则很有必要。
如果您需要在您的代码和外部代码之间共享这些数据,您必须确保您的序列化过程与外部程序的序列化过程相同。例如,它意味着知道 int
是否表示为 BigEndian
。
关于java - 将java类字段直接转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238830/