Подтвердить что ты не робот

Ненужные @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 вместо того, чтобы жаловаться на это?

Если кто-то хотел бы прокомментировать лучшую практику, тогда это было бы очень желанным.

4b9b3361

Ответ 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.