Uso @SuppressWarnings("unchecked")
e @SuppressWarnings("null")
principalmente sopra i metodi per consentire la compilazione del codice senza alcun avviso, ma ho i miei dubbi. Trovato questa domanda di Stackoverflow. Jon Skeet ha scritto una risposta ad essa che trovo intrigante.
Secondo lui,
Sometimes Java generics just doesn't let you do what you want to, and you need to effectively tell the compiler that what you're doing really will be legal at execution time.
E se ci fosse la possibilità di lanciare un'eccezione? Quindi non sopprimere gli avvertimenti è una cattiva idea? Non dovrei essere consapevole dei luoghi in cui i problemi potrebbero emergere?
Inoltre, che 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 # 1
Per quanto riguarda i tipi di cast non selezionati, in base a questa risposta (evidenziata da @gnat nei commenti di seguito), la soppressione di questi avvisi è necessaria.
Many indispensible Java libraries have never been updated to eliminate the need for unsafe typecasts. Suppressing those warnings is necessary so that other more important warnings will be noticed and corrected.
In caso di soppressione di altri avvisi, ancora in un'area grigia.
Aggiornamento n. 2
Come per Oracle Docs (citato anche da alcune risposte di seguito ):
As a matter of style, programmers should always use this annotation on the most deeply nested element where it is effective. If you want to suppress a warning in a particular method, you should annotate that method rather than its class.