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

StackOverflow https://stackoverflow.com/questions/1373215

  •  21-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

Пожалуйста, взгляните на

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

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

private static final long serialVersionUID = 1L;

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top