Eu uso os métodos acima @SuppressWarnings("unchecked")
e @SuppressWarnings("null")
acima para deixar o código compilar sem nenhum aviso, mas tenho minhas dúvidas. Encontrou esta pergunta sobre o Stackoverflow . Jon Skeet escreveu uma resposta que acho intrigante.
De acordo com ele,
Às vezes, os genéricos Java simplesmente não permitem que você faça o que deseja e você precisa informar efetivamente ao compilador que o que você está fazendo realmente será legal no momento da execução.
Mas e se houver uma chance de uma exceção ser lançada? Suprimir avisos não é uma má ideia, então? Eu não deveria estar ciente dos lugares onde os problemas poderiam surgir?
Além disso, e se alguém modificar meu código posteriormente e adicionar alguma funcionalidade questionável sem remover o SuppressWarnings? Como isso pode ser evitado e / ou existe outra alternativa para isso?
Devo estar usando @SuppressWarnings("unchecked")
e @SuppressWarnings("null")
?
Atualização # 1
No que diz respeito às conversões de tipo não verificado, de acordo com esta resposta (apontada por @gnat nos comentários abaixo), é necessário suprimir esses avisos.
Muitas bibliotecas Java indispensáveis nunca foram atualizadas para eliminar a necessidade de previsões inseguras. Suprimir esses avisos é necessário para que outros avisos mais importantes sejam notados e corrigidos.
No caso de suprimir outros avisos, ainda em uma área um pouco cinza.
Atualização # 2
Conforme o Oracle Docs (também mencionado por algumas respostas abaixo):
Por uma questão de estilo, os programadores sempre devem usar esta anotação no elemento mais profundamente aninhado em que é eficaz. Se você deseja suprimir um aviso em um método específico, anote esse método em vez de sua classe.