Eclipse автоматически генерирует serialVersionUID с каждым изменением

Eclipse красиво генерирует для меня serialVersionUID. Но это, по-видимому, генерация пассивного кода, поскольку идентификатор не будет автоматически обновляться, так как я изменяю файл, если я не буду снова генерировать.

Есть ли способ генерировать serialVersionUID каждый раз, когда я меняю содержимое? "Сохранить действия", похоже, не включают такой вариант - кто-нибудь нашел способ сделать это?

Было бы неплохо, если бы он мог сочетаться с действиями сохранения IDE или чем-то похожим, чтобы я мог отменить изменение, если бы я это делал, это не влияет на сериализацию.

С уважением, Токо

EDIT: @gustafc: для этого есть два основных момента:

  • Если я правильно понял, разные компиляторы могут иметь разные значения для serialVersionUID
    • От Serializable API: Тем не менее, настоятельно рекомендуется, чтобы все сериализуемые классы явно объявляли значения serialVersionUID, поскольку расчет по умолчанию serialVersionUID очень чувствителен к деталям класса, которые могут различаться в зависимости от реализаций компилятора и, таким образом, могут привести к неожиданным InvalidClassExceptions во время десериализации
  • Я использую тип командной строки, например, объекты, которые делают вещи на сервере. Таким образом, хотя содержимое объекта не изменяется, было бы неплохо поймать случаи, когда содержимое класса отличается на клиенте и сервере.
    • Но если подумать в другой раз, это, вероятно, не будет работать с автоматически генерируемым значением, так как изменились бы только изменения контента? Итак, на самом деле я хотел бы иметь автоматически увеличивающийся serialVersionUID

Звучит ли это разумно?

Суммарное суммирование, после того, как мы больше думаем, автоматически увеличивающийся serialVersionUID с каждым изменением будет еще лучше...

Ответы

Ответ 1

В Eclipse нет стандартных функций для этого.

Ответ 2

Вы можете обновить серийную версию во время сборки с помощью Ant Задача SerialVer.

Ответ 3

идентификатор не будет автоматически обновляться, так как я изменяю файл, если я не буду снова генерировать.

AFAIK default serialVersionUID - это только это - идентификатор, созданный на основе текущей "формы" класса. Поэтому, если вы хотите, чтобы ваш идентификатор генерировался, когда вы что-то меняете, просто оставьте его.

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

Случайное число немного лучше, чем последовательные числа (если вы можете предположить, что никто другой не делает класс с тем же самым квалифицированным именем в вашей среде), вы можете даже начинать с serialVersionUID = 1 и увеличивать это число по желанию.