2011-12-20 24 views
5

No entendí esta característica de Java. Sé que hace que la codificación sea más fácil y, a veces, parece más ordenada, pero ¿cuál es el uso real de esto? Por el contrario, creo que es mejor mostrar las advertencias, ya que en el futuro cualquiera puede referirlas antes de hacer modificaciones al código. ¿Esto @SuppressWarnings aumenta la eficacia de cumplimentación O es esto de acuerdo con cualquier estándar de codificación?¿Cuál es el uso de @SuppressWarnings

Respuesta

5

Otras respuestas ya se ha explicado casos de uso de @SuppressWarnings mucho, pero quiero enfatizar el punto de que veces es absolutamente necesario para utilizar @SuppressWarnings para superar las limitaciones de la propia lengua, y en estos casos el uso de @SuppressWarnings es absolutamente legal .

En otros casos, el uso de @SuppressWarnings puede considerarse cuestionable, porque en estos casos siempre puede deshacerse de las advertencias cambiando el código (aunque, obviamente, no siempre es aceptable).

Éstos son algunos casos comunes cuando usted no puede deshacerse de las advertencias y sin @SuppressWarnings:

  • la implementación de una colección genérica gama respaldados (ya que no se puede crear una matriz genérica)
  • Un Map de las clases de sus implementaciones (ya que no puede asignar diferentes valores de parámetro de tipo genérico a diferentes entradas de mapa)
1

El uso real es para suprimir las advertencias. Eso es. Nada menos, nada más. No creo que afecte a la eficiencia de compilación, pero definitivamente no a la eficiencia de tiempo de ejecución.

3

Cuando se trata de un código heredado que no es compatible con los genéricos (Java < = 1.4) esa es la única forma viable de librarse de las advertencias emitidas.

+2

'SuppressWarnings' no solo se usan para soporte genérico o advertencias de molde. –

+1

¿quién dice que son :)? –

+0

Vuelve a leer tu publicación. –

9

Durante la programación, debe tener cuidado con las advertencias del compilador y, en el mejor de los casos, compilar su código sin advertencias (y errores por supuesto).

Pero a veces no puede deshacerse de una advertencia y SABE que el código es correcto o no se puede cambiar. Entonces no querrá que el compilador le moleste siempre que algo anda mal.

Para que pueda suprimirlo con el comando que ha mencionado.

1

El uso de SuppressWarnings se debe utilizar durante la compilación (por lo tanto, solo el compilador sabe qué hacer cuando ve la anotación SuppressWarnings).

Los JavaDoc estados:

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name.

1

Hay varias razones para el uso @SuppressWarnings pero uno de los casos más útiles son:

  • Tener un proyecto existente con miles de advertencias. Desea que su equipo se ocupe de las advertencias ahora, pero no tiene tiempo para corregir todas las advertencias.

    La Anotación le ofrece la oportunidad de suprimir algunas advertencias que no se pueden solucionar rápidamente y obtener una base "limpia".

    Esta base limpia es esencial ya que nadie tendrá miedo de consultar el código con advertencias cuando hay miles de ellas, pero temerán cuando la base de código advierta y todos los demás en el equipo vean inmediatamente cuando alguien está ingresando el código con 2 advertencias más o menos.

  • Está utilizando libs de terceros y, por lo tanto, le molestan las advertencias de que no puede corregir, excepto cambiar el código de lib que no desea en la mayoría de los casos.

En mi opinión, la primera razón es uno de los mejores casos de uso para @SuppressWarnings.