Я, вероятно, рискую некоторыми понижениями на этом.
Мне кажется, что явно специфицировать serialVersionUID для новых классов плохо. Рассмотрим два случая не изменять его, когда макет должен быть изменен и изменить его, когда он не должен иметь.
Не меняется, когда оно должно быть изменено, происходит почти только в том случае, если оно явное. В этом случае это приводит к некоторым очень тонким, труднодоступным ошибкам. Особенно во время разработки, когда макет класса меняется часто. Но если он не был явно определен, он изменится, и десериализация будет громко ломаться, в основном, вероятно, решена путем очистки хранилища.
Изменение, когда оно не должно происходить, происходит почти только тогда, когда оно неявно. Это редкий случай, когда макет класса изменился, но мы все еще хотим десериализовать старые сериализованные капли. Вероятно, это будет обнаружено во время QA (Странные ошибки после обновления с 5.2 до 5.2.1, см. Прилагаемую трассировку стека) и могут быть тривиально зафиксированы путем установки явного значения.
Комментарии?