serialVersionUID является статическим полем, которое используется для контроля версий сериализуемых классов. Оно используется для определения уникальной идентификации класса при сериализации и десериализации объектов. serialVersionUID помогает обеспечить совместимость между классами при изменении их структуры.

Когда класс сериализуется, serialVersionUID записывается в поток данных вместе с объектом. При десериализации объекта Java сравнивает serialVersionUID, прочитанный из потока данных, со значением текущего serialVersionUID в классе: ☕️ если они совпадают, то класс считается совместимым и процесс десериализации может продолжаться. ☕️ если значения serialVersionUID отличаются, будет сгенерировано исключение InvalidClassException, указывающее на несовместимость версий класса.

import java.io.*;
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public String toString()
return "Person [name=" + name +
", age=" + age + "]";
public class SerializationExample {
public static void main(String[] args) {
// Создание объекта Person
Person person = new Person( "John", 25);
// Сериализация объекта в файл
try (ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream( "person .ser"))) {
out.writeObject(person);
System.out.println( "Объект сериализован и записан в файл.");
} catch (IOException e) {
e.printStackTrace() ;
// Десериализация объекта из файла
try (ObjectInputStream in = new ObjectInputStream( new FileInputStream("person .ser") )) {
Person deserializedPerson = (Person) in. readObject);
System.out.println( "Объект успешно десериализован:
" + deserializedPerson) ;
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace( ) ;
}}}

IMAGE 2023-08-28 08:41:34.jpg