Это зависит.
Если вы используете разные компиляторы для компиляции исходного кода несколько раз, ваш скомпилированный код может иметь разные serializationId, которые нарушат сериализацию. Затем вам нужно придерживаться постоянного serializationId в вашем коде. Он должен быть статическим, конечным и для каждого класса (не наследуемым).
Однако, если вы всегда компилируете свой код с определенным компилятором и всегда развертываете свой код одним выстрелом на всех ваших виртуальных машинах, вам, вероятно, нужна строгая проверка версий и вы хотите убедиться, что в любое время существует только одна версия кода работает, в этом случае, вы должны просто отключить предупреждение. Таким образом, в случае, если виртуальная машина не была успешно развернута и работает со старой версией вашего кода, вы, вероятно, ожидаете исключения во время сериализации, а не для причудливых десериализованных объектов. Это мой случай, у нас был очень очень большой кластер, и нам нужна строгая проверка версий, чтобы выяснить любую проблему развертывания.
В любом случае, возможно, вам следует избегать сериализации, когда это возможно, поскольку сериализация по умолчанию очень медленная по сравнению с буферами протокола или экономией и не поддерживает межязыковую совместимость.