Я хотел бы удалить некоторые предупреждения для некоторых классов, сгенерировав автоматический идентификатор серийной версии. В Eclipse это сделать тривиально - среда IDE может сгенерировать его автоматически и добавить в класс. Однако я не вижу этой функции в NetBeans. Это доступно? Если да, то где это? Если нет, есть ли плагин, который может его включить?
Может ли NetBeans автоматически генерировать идентификатор последовательной версии для класса Java?
Ответы (5)
На самом деле моим решением этой «проблемы» было деактивировать это предупреждение в моей конфигурации проекта (я использую Eclipse, но я думаю, что для NetBeans то же самое), поскольку ИМХО это неправильное предупреждение : отсутствие serialVersion - самый безопасный вариант, потому что JVM вычисляет тот, который является уникальным при запуске (что-то вроде хеша класса), добавляя его явно, а затем обременяет вас позаботьтесь об обновлении его тогда и только тогда, когда вы внесли несовместимые изменения в свой код.
Итак, если вас это не волнует, лучше избегать этого значения (таким образом, оно совместимо только с версией, которая совместима наверняка, но с некоторыми ложными срабатываниями: он считает, что это несовместимо, но на самом деле это было бы) вместо того, чтобы указывать фиксированное значение, которое вы (вероятно, в моем случае) забыли бы обновить при необходимости, что привело бы к фактическим ошибкам достоверности (ложно-отрицательные: он думает, что он совместим, но это не так) .
Это также легко сделать вручную, если вам не нужно поддерживать совместимость с существующими сериализованными экземплярами. Просто скопируйте эту строку в класс:
private static final long serialVersionUID = 1L;
Обратите внимание на то, что serialVersionUID
не обязательно должен быть уникальным для разных классов.
(Для пользователя, который сейчас задает тот же вопрос)
Я использую nb7.4 и нашел этот плагин от nb6.5 до nb7.4
plugin
Я тестировал его в nb7.4 и работает хорошо. Значение идентификатора служебной версии см. В
serialVersionUID
если вы добавите его явно, вы можете внести все изменения в свой класс без изменения uid до тех пор, пока ваш класс не будет сериализован и где-то сохранить: если вы создаете класс A, сериализуйте его
end, затем сохраните в конце базы данных, затем измените класс A, сделав его несовместимым со старым классом A,
когда кто-то пытается загрузить сериализованный объект из последнего класса A в новый класс A, у него могут возникнуть проблемы.
Когда вы меняете класс A и делаете его несовместимым с последним классом A, вам нужно изменить uid, чтобы, если кто-то попытается загрузить, он получит InvalidClassExceptions.
Чтобы отключить эти предупреждения в Netbeans:
- Открыть: Инструменты -> Параметры
- Открыть: Редактор -> вкладка Подсказки
- Выберите язык: Java
- Снимите флажок Стандартные предупреждения Javac -> Сериализация
- OK
Мне также пришлось очистить ~ / .netbeans / 6.8 / var / cache и перезапустить Netbeans, чтобы удалить предупреждения из списка задач.