Как удалить предупреждение Сериализуемый класс ClASSNAME не объявляет статическое окончательное поле serialVersionUID типа long - программирование
Подтвердить что ты не робот

Как удалить предупреждение Сериализуемый класс ClASSNAME не объявляет статическое окончательное поле serialVersionUID типа long

Я создаю класс, который расширяет класс Exception, я получил это предупреждение на Eclipse

Сериализуемый класс PhoneAlreadyExists не объявляет статический конечное поле serialVersionUID типа long

как его удалить?

public class PhoneAlreadyExists extends Exception {
    public PhoneAlreadyExists() {
        // TODO Auto-generated constructor stub
        super();
    }

    PhoneAlreadyExists(String message) {
        super(message);
    }

}
4b9b3361

Ответ 1

Добавьте аннотацию @SuppressWarnings("serial") в свой класс, чтобы игнорировать это предупреждение

Ответ 2

Чтобы изменить поведение в eclipse глобально: перейдите в Настройки- > Java- > Compiler- > Errors/Warnings- > Potential Programming Problems. Там есть запись для этой конкретной проблемы. Вы можете изменить его и для конкретного проекта.

Это отвечает на ваш вопрос, хотя - я бы рекомендовал оставить его на уровне предупреждения и добавить недостающие поля. Или добавьте аннотацию SuppressWarnings к тем сериализуемым классам, которым действительно не нужно поле, потому что они никогда не будут сериализованы.

Ответ 3

Вам нужно объявить статическое окончательное поле serialVersionUID типа long.

Посмотрите API Serializable Java. Исключения должны реализовывать Serializable, а классы Serializable должны иметь serialVersionUID:

public static final long serialVersionUID = 1L;

Всякий раз, когда вы делаете несовместимые изменения в классе, увеличивайте эту версию.

Ответ 4

Чтобы игнорировать предупреждение "Сериализуемый класс ClASSNAME не объявляет статический окончательный serialVersionUID..." выполните следующие действия внутри eclipse *:

  • Щелкните Window-Preferences-Java-Compiler-Errors/Warnings
  • Нажмите "Проблемы с потенциальным программированием"
  • Прокрутите вниз до "Сериализуемый класс без serialVersionUID"
  • Выберите "Игнорировать"
  • Нажмите "Применить"
  • Нажмите "ОК"

Сохраните и закройте среду разработки eclipse Когда вы снова открываете затмение, эти конкретные предупреждения больше не должны отображаться.

* Для этого примера я использую Eclipse IDE для разработчиков Java - Версия: Mars.2 Release (4.5.2)

Ответ 5

просто добавьте этот код @SuppressWarnings ( "serial" ) над вашим общедоступным классом PhoneAlreadyExists extends Exception {line

Ответ 6

Лучше всего добавить serialversionUID в большинстве случаев, но eclipse дает предупреждение на всех производных классах swing, которые никогда не будут сериализованы. Я попытался изменить настройку в настройках → Java → Компилятор → Ошибки/предупреждения → Потенциальные проблемы программирования, но это не повлияло. Поэтому я думаю, что лучшим решением было бы подавить предупреждение для каждого класса, который никогда не будет сериализован; или порезать зубы и игнорировать предупреждение.