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