Ответ 1
Добавьте аннотацию @SuppressWarnings("serial")
в свой класс, чтобы игнорировать это предупреждение
Я создаю класс, который расширяет класс Exception
, я получил это предупреждение на Eclipse
Сериализуемый класс PhoneAlreadyExists не объявляет статический конечное поле serialVersionUID типа long
как его удалить?
public class PhoneAlreadyExists extends Exception {
public PhoneAlreadyExists() {
// TODO Auto-generated constructor stub
super();
}
PhoneAlreadyExists(String message) {
super(message);
}
}
Добавьте аннотацию @SuppressWarnings("serial")
в свой класс, чтобы игнорировать это предупреждение
Чтобы изменить поведение в eclipse глобально: перейдите в Настройки- > Java- > Compiler- > Errors/Warnings- > Potential Programming Problems. Там есть запись для этой конкретной проблемы. Вы можете изменить его и для конкретного проекта.
Это отвечает на ваш вопрос, хотя - я бы рекомендовал оставить его на уровне предупреждения и добавить недостающие поля. Или добавьте аннотацию SuppressWarnings к тем сериализуемым классам, которым действительно не нужно поле, потому что они никогда не будут сериализованы.
Вам нужно объявить статическое окончательное поле serialVersionUID типа long.
Посмотрите API Serializable
Java. Исключения должны реализовывать Serializable
, а классы Serializable
должны иметь serialVersionUID
:
public static final long serialVersionUID = 1L;
Всякий раз, когда вы делаете несовместимые изменения в классе, увеличивайте эту версию.
Чтобы игнорировать предупреждение "Сериализуемый класс ClASSNAME не объявляет статический окончательный serialVersionUID..." выполните следующие действия внутри eclipse *:
Сохраните и закройте среду разработки eclipse Когда вы снова открываете затмение, эти конкретные предупреждения больше не должны отображаться.
* Для этого примера я использую Eclipse IDE для разработчиков Java - Версия: Mars.2 Release (4.5.2)
просто добавьте этот код @SuppressWarnings ( "serial" ) над вашим общедоступным классом PhoneAlreadyExists extends Exception {line
Лучше всего добавить serialversionUID в большинстве случаев, но eclipse дает предупреждение на всех производных классах swing, которые никогда не будут сериализованы. Я попытался изменить настройку в настройках → Java → Компилятор → Ошибки/предупреждения → Потенциальные проблемы программирования, но это не повлияло. Поэтому я думаю, что лучшим решением было бы подавить предупреждение для каждого класса, который никогда не будет сериализован; или порезать зубы и игнорировать предупреждение.