Utilizo @SuppressWarnings("unchecked")
y @SuppressWarnings("null")
sobre todo los métodos anteriores para permitir que el código se compile sin advertencias, pero tengo mis dudas. Encontré esta pregunta de Stackoverflow . Jon Skeet escribió una respuesta que encuentro intrigante.
De acuerdo con él,
A veces, los genéricos de Java simplemente no te permiten hacer lo que quieres y debes decirle al compilador de manera efectiva que lo que estás haciendo realmente será legal en el momento de la ejecución.
Pero, ¿qué pasa si existe la posibilidad de que se produzca una excepción? ¿No es una mala idea suprimir las advertencias? ¿No debería estar al tanto de los lugares donde podrían surgir problemas?
Además, ¿qué pasa si alguien más modifica mi código más tarde y agrega alguna funcionalidad cuestionable sin eliminar SuppressWarnings? ¿Cómo se puede evitar eso y / o hay alguna otra alternativa a esto?
¿Debo estar usando @SuppressWarnings("unchecked")
y @SuppressWarnings("null")
?
Actualización n. ° 1
En cuanto a los tipos de conversión no verificados, según esta respuesta (señalada por @gnat en los comentarios a continuación), es necesario suprimir estas advertencias.
Muchas bibliotecas Java indispensables nunca se han actualizado para eliminar la necesidad de tipos de letra inseguros. Es necesario suprimir esas advertencias para que otras advertencias más importantes se noten y corrijan.
En caso de suprimir otras advertencias, todavía en un área gris.
Actualización n. ° 2
Según Oracle Docs (también mencionado por algunas respuestas a continuación):
Como cuestión de estilo, los programadores siempre deben usar esta anotación en el elemento más anidado donde sea efectivo. Si desea suprimir una advertencia en un método en particular, debe anotar ese método en lugar de su clase.