Как в Java преобразовать объект в массив байтов / Object → byte[]
Начиная с Java 7 разумнее всего использовать try-with-resources. В этом случае решение может выглядеть так:
public static byte[] serialize(Serializable obj) {
if (obj == null) {
return null;
}
byte[] objectBytes = null;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos)) {
out.writeObject(obj);
out.flush();
objectBytes = bos.toByteArray();
} catch (IOException ex) {
ex.printStackTrace();
}
return objectBytes;
}
Объект, передаваемый методу в качестве аргумента, должен реализовывать интерфейс Serializable.
Второй способ заключается в том, чтобы воспользоваться сторонними библиотеками:
например, библиотекой Commons Lang от Apache. Тогда код получается намного короче.
byte[] objectBytes = SerializationUtils.serialize(obj);
Точно такой же код получится при использовании спринговой библиотеки SerializationUtils:
byte[] objectBytes = SerializationUtils.serialize(obj);
Эти методы также требуют объект, реализующий интерфейс Serializable в качестве аргумента.