Unnecessary @SuppressWarnings("unused")

Edd picture Edd · Mar 2, 2012 · Viewed 85.1k times · Source

I'm getting a compiler warning for the @SuppressWarnings annotation in eclipse for the code:

@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!");
}

It looks like a yellow squiggle under the word "unused" and on mouse hover I get the tooltip Unnecessary @SuppressWarnings("unused").

I think another developer is being prompted to put in these annotations by eclipse and I'm basically being prompted to take them out. How can I configure eclipse to prompt me to put the @SuppressWarnings annotation in instead of it complaining about it?

If anyone would like to comment on best practice here then that would also be most welcome.

Answer

Óscar López picture Óscar López · Mar 2, 2012

In the code in your question, the @SuppressWarnings("unused") annotation is unnecessary because the method is either overriding another method from a superclass or implementing an interface. Even if you don't actually use the whatever parameter it's mandatory to declare it, otherwise the @Override annotation will produce an error (you'd be changing the signature of the overridden method if you removed the parameter.)

In some older versions of Eclipse the code as shown would not cause a warning, but in more recent releases it does. I believe it's a valid warning, and I'd rather remove the @SuppressWarnings("unused") in this case.