Может ли NetBeans автоматически генерировать идентификатор последовательной версии для класса Java?

Я хотел бы удалить некоторые предупреждения для некоторых классов, сгенерировав автоматический идентификатор серийной версии. В Eclipse это сделать тривиально - среда IDE может сгенерировать его автоматически и добавить в класс. Однако я не вижу этой функции в NetBeans. Это доступно? Если да, то где это? Если нет, есть ли плагин, который может его включить?


person Thomas Owens    schedule 03.09.2009    source источник


Ответы (5)


На самом деле моим решением этой «проблемы» было деактивировать это предупреждение в моей конфигурации проекта (я использую Eclipse, но я думаю, что для NetBeans то же самое), поскольку ИМХО это неправильное предупреждение : отсутствие serialVersion - самый безопасный вариант, потому что JVM вычисляет тот, который является уникальным при запуске (что-то вроде хеша класса), добавляя его явно, а затем обременяет вас позаботьтесь об обновлении его тогда и только тогда, когда вы внесли несовместимые изменения в свой код.

Итак, если вас это не волнует, лучше избегать этого значения (таким образом, оно совместимо только с версией, которая совместима наверняка, но с некоторыми ложными срабатываниями: он считает, что это несовместимо, но на самом деле это было бы) вместо того, чтобы указывать фиксированное значение, которое вы (вероятно, в моем случае) забыли бы обновить при необходимости, что привело бы к фактическим ошибкам достоверности (ложно-отрицательные: он думает, что он совместим, но это не так) .

person lapo    schedule 03.09.2009
comment
Это зависит от того, как вы используете сериализацию. Если вы будете сериализовать классы в разных JVM, то есть от одной JVM к другой, это может вызвать несовместимость. - person Yishai; 03.09.2009
comment
Похоже, что этот подход будет лучше всего работать в моем текущем проекте, но я не видел места, где можно было бы отключить это предупреждение повсюду (и наличие большого количества аннотаций подавления предупреждений кажется плохим) в NetBeans. - person Thomas Owens; 03.09.2009
comment
Не использование версии может привести к разрыву сериализации между двумя jvm или между разными ОС, или разными версиями java и другими реальными случаями, поэтому, если вам нужно совместно использовать объекты Java в разных системах, очень рекомендуется использовать идентификатор версии, даже если вы сохранить объекты, закрыть систему и затем обновить jvm может привести к нарушению сериализации - person rekiem87; 20.10.2014

Это также легко сделать вручную, если вам не нужно поддерживать совместимость с существующими сериализованными экземплярами. Просто скопируйте эту строку в класс:

private static final long serialVersionUID = 1L;

Обратите внимание на то, что serialVersionUID не обязательно должен быть уникальным для разных классов.

person Michael Borgwardt    schedule 03.09.2009
comment
Хотя это хорошее предложение, я решил проигнорировать предупреждение, так как это не ТАК важно для этого конкретного проекта. Мне просто не понравилось предупреждение. - person Thomas Owens; 03.09.2009

Похоже, что NetBeans из коробки не поддерживает эту функцию, но плагины поддерживают.

Пожалуйста, посмотрите на

ссылка 1, ссылка 2 и ссылка 3

person Koekiebox    schedule 03.09.2009

(Для пользователя, который сейчас задает тот же вопрос)
Я использую nb7.4 и нашел этот плагин от nb6.5 до nb7.4
plugin
Я тестировал его в nb7.4 и работает хорошо. Значение идентификатора служебной версии см. В
serialVersionUID
если вы добавите его явно, вы можете внести все изменения в свой класс без изменения uid до тех пор, пока ваш класс не будет сериализован и где-то сохранить: если вы создаете класс A, сериализуйте его
end, затем сохраните в конце базы данных, затем измените класс A, сделав его несовместимым со старым классом A,
когда кто-то пытается загрузить сериализованный объект из последнего класса A в новый класс A, у него могут возникнуть проблемы.

Когда вы меняете класс A и делаете его несовместимым с последним классом A, вам нужно изменить uid, чтобы, если кто-то попытается загрузить, он получит InvalidClassExceptions.

person Leonardo Saracini    schedule 09.12.2013

Чтобы отключить эти предупреждения в Netbeans:

  1. Открыть: Инструменты -> Параметры
  2. Открыть: Редактор -> вкладка Подсказки
  3. Выберите язык: Java
  4. Снимите флажок Стандартные предупреждения Javac -> Сериализация
  5. OK

Мне также пришлось очистить ~ / .netbeans / 6.8 / var / cache и перезапустить Netbeans, чтобы удалить предупреждения из списка задач.

person Community    schedule 07.01.2010