40

Me estoy poniendo un compilador de advertencia para el @SuppressWarnings anotación en Eclipse para el código:@SuppressWarnings innecesarios ("sin usar")

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

Parece que un garabato amarillo bajo la palabra "sin uso" y el ratón hover Me sale la información sobre herramientas Unnecessary @SuppressWarnings("unused").

Creo que se le pide a otro desarrollador que agregue estas anotaciones por eclipse y básicamente me piden que las elimine. ¿Cómo puedo configurar eclipse para pedirme que ponga la anotación @SuppressWarnings en lugar de quejarse?

Si a alguien le gustaría comentar sobre las mejores prácticas aquí, entonces también sería muy bienvenido.

+5

Realmente depende de si le gusta ver líneas onduladas en su código. Me enoja. – Jivings

Respuesta

41

En el código de su pregunta, la anotación @SuppressWarnings("unused") es innecesaria porque el método está anulando otro método de una superclase o implementando una interfaz. Incluso si en realidad no se utiliza el parámetro whatever es obligatorio declarar que, de lo contrario la anotación @Override producirá un error (que estaría cambiando la firma del método reemplazado si ha quitado el parámetro.)

En algunos versiones anteriores de Eclipse el código como se muestra no causaría una advertencia, pero en versiones más recientes sí lo hace. Creo que es una advertencia válida, y prefiero eliminar el @SuppressWarnings("unused") en este caso.

+3

Además, en versiones más recientes, la advertencia de "no utilizado" se ha vuelto más refinada: si hay una anotación con política de retención en tiempo de ejecución adjunta al método, la advertencia no utilizada se suprime (como debería). –

22

Ir a

Ventana → Preferencias Java → Compilador errores/advertencias → Anotaciones .

y seleccione Ignorar para no utilizado '@ SuppressWarnings` símbolo.

5

Alternativamente, si se piensa que es más correcto para eliminar la SuppressWarnings anotación:

Ventana -> Preferencias -> Java -> Generador -> Errores/Advertencias -> código innecesario -> Valor de parámetro no se utiliza

y seleccione Ignorar para superar y la aplicación de métodos

5

en mi código no hay herencia definición de los 3 métodos con @SuppressWarnings ("sin usar")

Este código proporciona '@SuppressWarnings innecesarios' ('no utilizados') 'en Eclipse Juno (última versión), pero si elimino @SuppressWarnings ("sin usar"), recibo advertencias de "Constructor/Método nunca se usa" en IntelliJ IDEA 11.1 0.3

los métodos no se utilizan directamente en el proyecto, sólo por los productos de 3 ª parte Jackson, JAXB & GSON, por lo IntelliJ es correcto, yo diría ...

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; 
    } 
} 

creo que esto es un error en Eclipse.

+3

Doh, traté de enviar un error en eclipse.org, pero el sitio web es demasiado complicado, espero que alguien les dé este informe de error –

+2

Me pareció divertido. ¿Has cambiado a IntelliJ todavía? –

+1

Yo diría que Eclipse tiene razón. Acceder a constructores públicos no-arg mediante reflexión es un patrón frecuente en Java, al igual que aquí, de hecho. –

Cuestiones relacionadas