Конвертировать объект в байтовый массив и наоборот без сериализации - PullRequest
0 голосов
/ 23 октября 2011

У меня есть проект Java, в котором я должен сохранять данные каждого прогона для последующего использования. Профессор хочет, чтобы мы использовали для этого RandomAccessFile, поэтому мне нужно преобразовать объекты в байты, чтобы они могли быть сохранены в RAF. Основная проблема в том, что если мы используем Serializable, он будет вычитать очки, поэтому мой вопрос:

Есть ли способ преобразовать объект в байтовый массив и наоборот без сериализации?

Мне не нужен полный код, просто подход к тому, как это сделать, ценится.

EDIT:

Спасибо всем за совет, в итоге я преобразовал поля объектов в байты и записал их в RAF.

Ответы [ 3 ]

1 голос
/ 23 октября 2011

Если вы не можете использовать Serializable в классе, вы должны найти все поля объекта, используя Отражение .

После этого вы можете последовать предложению Мэтью Флэшена записать эти значения полей в ваш файл RandomAccessFile.

1 голос
/ 23 октября 2011

Возможно, xml - это хорошая идея для представления объекта в текстовом формате.Вы можете дать каждому объекту уникальный идентификатор и использовать <ref>id</ref>, чтобы показать отношения.

1 голос
/ 23 октября 2011

Вы можете записать примитивы и несколько объектов (строки, байтовые массивы и коробочные примитивы, такие как Boolean и Integer, которые будут распакованы) непосредственно в RAF. Если у вас есть более крупный объект, разбейте его на то, что RAF может принять. Например, если у вас есть список строк, зациклите их и напишите каждую с помощью writeUTF . Помните, что вы должны прочитать его обратно, поэтому вам придется использовать какие-то заголовки. Например, вы, вероятно, захотите написать длину списка перед элементами.

...