Сериализация и десериализация Java объектов:
Сериализация — это процесс сохранения состояния объекта в последовательность байт.
Десериализация — это процесс восстановления объекта из этих байт.
Существует два способа сделать объект сериализуемым:
- реализация java.io.Serializable, не требующая никаких усилий.
- java.io.Externalizable он содержит два метода, которые необходимо реализовать – writeExternal(ObjectOutput) и readExternal(ObjectInput)
Если добавить оператор transient — значение этого поля не будет сериализовано.
UID можно сгенерировать через IDEA
private static final long serialVersionUID =;
Alt + Enter
Пример классов:
public class NeuralNetwork implements Serializable {
private static final long serialVersionUID = 415036214236198720L;
private Layer[] layers;
private transient NeuralNetworkFunctionName activationName;
private transient NeuralNetworkFunctionName derivativeName;
public class Layer implements Serializable {
private static final long serialVersionUID = 9216696740948170978L;
Пример Сериализация объекта:
NeuralNetwork nn = new NeuralNetwork(LEARNING_RATE, ACTIVATION, DERIVATIVE, 784, 512, 128, 32, 10);
FileOutputStream outputStream = new FileOutputStream(NEURAL_NETWORK_PATH + "/digit-epochs-" + EPOCHS + ".dat");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(nn);
objectOutputStream.close();
Пример Десериализации объекта:
FileInputStream fileInputStream = new FileInputStream(NEURAL_NETWORK_PATH + "/digit-epochs-" + EPOCHS + ".dat");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
NeuralNetwork neuralNetwork = (NeuralNetwork) objectInputStream.readObject();