Io uso @SuppressWarnings("unchecked")
e @SuppressWarnings("null")
per lo più al di sopra metodi di lasciare che il codice di compilazione senza avvisi, ma ho i miei dubbi. Ho trovato questa domanda StackOverflow . Jon Skeet ha scritto una risposta che trovo intrigante.
Secondo lui,
A volte i generici Java non ti consentono di fare ciò che vuoi e devi dire efficacemente al compilatore che ciò che stai facendo sarà veramente legale al momento dell'esecuzione.
E se ci fosse la possibilità che venga generata un'eccezione? La soppressione degli avvisi non è quindi una cattiva idea? Non dovrei essere consapevole dei luoghi in cui i problemi potrebbero emergere?
Inoltre, cosa succede se qualcun altro modifica il mio codice in un secondo momento e aggiunge alcune funzionalità discutibili senza rimuovere SuppressWarnings? Come può essere evitato e / o c'è qualche altra alternativa a questo?
Dovrei usare @SuppressWarnings("unchecked")
e @SuppressWarnings("null")
?
Aggiornamento n. 1
Per quanto riguarda i tipi di caselle non selezionati, secondo questa risposta (sottolineata da @gnat nei commenti seguenti), è necessario sopprimere questi avvisi.
Molte librerie Java indispensabili non sono mai state aggiornate per eliminare la necessità di tipografie non sicure. La soppressione di tali avvisi è necessaria in modo che altri avvisi più importanti vengano rilevati e corretti.
In caso di soppressione di altri avvisi, sempre in una zona grigia.
Aggiornamento n. 2
Secondo Oracle Docs (menzionato anche da alcune risposte di seguito):
Per motivi di stile, i programmatori dovrebbero sempre usare questa annotazione sull'elemento più annidato dove è efficace. Se si desidera sopprimere un avviso in un particolare metodo, è necessario annotare quel metodo anziché la sua classe.