Ненужные @SuppressWarnings ( "неиспользуемые" )
Я получаю предупреждение компилятора для аннотации @SuppressWarnings
в eclipse для кода:
@Override
public boolean doSomething(@SuppressWarnings("unused") String whatever) throws AnException {
throw new AnException("I'm still in bed and can't do anything until I've had a shower!");
}
Похоже на желтую фразу под словом "неиспользуемый" и при наведении мыши я получаю подсказку Unnecessary @SuppressWarnings("unused")
.
Я думаю, что другому разработчику предлагается включить эти аннотации в eclipse, и мне в основном предлагается их вытащить. Как настроить eclipse, чтобы пригласить меня добавить аннотацию @SuppressWarnings
вместо того, чтобы жаловаться на это?
Если кто-то хотел бы прокомментировать лучшую практику, тогда это было бы очень желанным.
Ответы
Ответ 1
В коде вашего вопроса аннотация @SuppressWarnings("unused")
не нужна, потому что этот метод либо переопределяет другой метод из суперкласса, либо реализует интерфейс. Даже если вы фактически не используете параметр whatever
, обязательно объявить его, иначе аннотация @Override
приведет к ошибке (вы бы изменили подпись переопределенного метода, если вы удалили параметр.)
В некоторых более старых версиях Eclipse код, как показано, не вызывает предупреждения, но в последних версиях он делает. Я считаю, что это действительное предупреждение, и я предпочел бы удалить @SuppressWarnings("unused")
в этом случае.
Ответ 2
Перейдите к
Окно → Настройки → Java → Компилятор → Ошибки/Предупреждения → Аннотации.
И выберите Игнорировать для Неиспользуемого токена @@SuppressWarnings.
Ответ 3
В качестве альтернативы, если вы считаете более правильным удалить аннотацию SuppressWarnings:
Окно → Настройки → Java → Компилятор → Ошибки/Предупреждения → Ненужный код → Значение параметра не используется
и выберите Игнорировать в методах переопределения и реализации
Ответ 4
В моем коде нет наследования, определяющего 3 метода с @SuppressWarnings ( "unused" )
Этот код дает "Необязательный @SuppressWarnings (" unused ")" в Eclipse Juno (последняя версия), но если я удалю @SuppressWarnings ( "unused" ), я получаю предупреждения "Конструктор/Метод никогда не используется" в IntelliJ IDEA 11.1.3
Методы напрямую не используются в проекте, только сторонними продуктами Jackson, JAXB и GSON, поэтому IntelliJ прав, я бы сказал...
public class EmailUnsendable extends SkjemaError {
private NestedCommand command; // Can't be Command (interface) because of GSON!
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public EmailUnsendable() {
}
public EmailUnsendable(String referenceNumber, String stackTrace, NestedCommand command) {
super(referenceNumber, stackTrace);
this.command = command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public NestedCommand getCommand() {
return command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public void setCommand(NestedCommand command) {
this.command = command;
}
}
Я считаю, что это ошибка в Eclipse.