Combinando múltiples anotaciones @SuppressWarnings - Eclipse Indigo

149

Entonces, el problema es poder combinar supresiones de advertencia múltiples para que cada elemento no necesite su propia @SuppressWarningsanotación.

Así por ejemplo:

public class Example
    public Example() {
        GO go = new GO();  // unused
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked
    }
    ...
    // getters/setters/other methods
}

Ahora, en lugar de tener dos @SuppressWarnings, quiero tener uno a nivel de clase para esas dos advertencias, así que así:

@SuppressWarnings( "unused", "unchecked" )
public class Example
    public Example() {
        GO go = new GO();  // unused - suppressed
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked - suppressed
    }
    ...
    // getters/setters/other methods
}

Pero esa no es una sintaxis válida, ¿hay alguna manera de hacer esto?

conocidoasilya
fuente
@SuppressWarnings ("sin usar", "sin marcar") no funciona, modifíquelo a @SuppressWarnings ({"sin usar", "sin marcar"})
Raj

Respuestas:

304

Use lo siguiente: @SuppressWarnings({"unused", "unchecked"})

LuGo
fuente
¿Es esta la convención normal para todas las anotaciones en Eclipse?
knownasilya
1
No. Esto es para un parámetro de lista. Cuando use un SDK para ejecutar Eclipse (o cuando tenga las fuentes de Java conectadas), simplemente puede presionar F3 en cualquier anotación para ver su declaración de fuente, y así ver cuántos (y qué) parámetros necesita.
Bananeweizen
8
Eso sería una matriz, como en String[] value(). Las listas no tienen una sintaxis especial en Java, pero las matrices se pueden definir usando llaves.
Maarten Bodewes
14

Si echas un vistazo dentro de la anotación, verás esto:

public @interface SuppressWarnings {
    String[] value();
}

Como puede ver, el parámetro de valor es una matriz de cadenas ... por lo que el parámetro en la anotación puede ser: valor1, valor2 o valor3 donde

final String[] value1 = { "a1" };
final String[] value2 = { "a1", "a2" };
final String[] value3 = { "a1", "a2", "a3" };

es decir:

@SuppressWarnings({"unused"})
@SuppressWarnings({"unused", "javadoc"})

a menudo puedes ver algo como

@SuppressWarnings("unused") 

y este es un caso particular que permite un elemento sin " {} "

ΦXocę 웃 Пepeúpa ツ
fuente