Существует ли канонический способ определения структуры данных в Java (и с помощью расширения Kotlin), которую можно сериализовать в байтовый массив или последовательность битов в порядке, в котором байты определены в структуре?
Похоже на Struct в C.
Редактировать: Итак, в дополнение к этому, я бы хотел простой и выразительный способ определения структуры данных и последующего доступа к любой ее части.Так, например, в псевдокоде:
DataStructure Message {
Bit newFlag;
Bit genderFlag;
Bit sizeFlag;
Bit activeFlag;
Bit[4] operation;
Byte messageSize;
Byte[] message;
}
Итак, мы делаем:
Message firstMessage = new Message(1, 0, 1, 0, b'0010', 11, "Hello there");
И мы можем сказать:
ByteArray serialisedMessage = firstMessage.toBytes();
Что даст наммассив, который выглядел так:
[b'10100010', b'00001011', "Hello there" (but in bytes)]
Тогда мы могли бы сделать:
firstMessage.genderFlag = 1;
.. и просто повторно запустить .toBytes для объекта.
Очевидно, есть миллионспособы выполнения таких вещей , как это в Java, но ничего синтаксически простого, насколько я вижу, - практически все, что связано с необходимостью писать собственный метод сериализации (а не сериализации объектов в соответствии с Java) для каждогообъект.Возможно, это канонический способ сделать это, но было бы неплохо сделать это проще, в соответствии с C, Rust и, конечно, COBOL.