Как в 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 в качестве аргумента.