java - 将java类字段直接转换为字节数组

标签 java serialization arrays

让我上一堂简单的课

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/

相关文章:

java - 了解有关 serialVersionUID 字段的 FindBugs 警告

django 休息框架 : set field-level error from serializer validate() method

java - 计算 int 在数组中出现的次数(Java)

java - 打印 ArrayList<String []> 的索引

c# - 如何仅在二维数组的边缘选择点

现有文件上的 java.io.FileNotFoundException

java - Repaint 不调用 PaintComponent

java - 如何以编程方式将两个文本文件中的 "changes"合并到一个文件中?

Java 函数转换为 Kotlin 失败

json - 在 Swift 4 中将以 0 开头的字符串转换为 Json