SerialVersionUID
private static final long serialVersionUID = -6849794470754667710L;
SerialVersionUID - это private static final поле типа long класса который реализует интерфейс Serializable.
Во время сериализации, если мы не объявляем SerialVersionUID в нашем классе, среда выполнения Java создает номер версии для класса, так что она может десереализировать его позже. Если во время десериализации, SerialVersionUID не соответствует, то процесс завершится с исключением InvalidClassException.
Процесс создания номера версии Jav'ой чувствителен ко многим метаданным класса включая количество полей, тип полей, модификаторы доступа полей, интерфейсов, которые реализованы в классе и прочего.
Лучшая практика в сериализации – это явно объявить SerialVersionUID, чтобы избежать любых проблем при де-сериализации, особенно если вы работаете с клиент-серверным приложением, которое опирается на сериализованные данные, например, RMI.
Под сериализацией здесь понимается только стандартный механизм Java (ObjectInputStream, ObjectOutputStream).