Ich verwende @SuppressWarnings("unchecked")
und @SuppressWarnings("null")
meistens die oben genannten Methoden, um den Code ohne Warnungen kompilieren zu lassen, aber ich habe meine Zweifel. Ich habe diese Stackoverflow- Frage gefunden . Jon Skeet hat eine Antwort darauf geschrieben, die mich fasziniert.
Laut ihm,
Manchmal lassen Sie Java-Generika einfach nicht tun, was Sie wollen, und Sie müssen dem Compiler effektiv mitteilen, dass das, was Sie tun, zur Ausführungszeit wirklich legal ist.
Aber was ist, wenn die Möglichkeit besteht, dass eine Ausnahme ausgelöst wird? Ist es dann nicht eine schlechte Idee, Warnungen zu unterdrücken? Sollte ich mir nicht der Orte bewusst sein, an denen Probleme auftreten könnten?
Was ist auch, wenn jemand anderes meinen Code später ändert und fragwürdige Funktionen hinzufügt, ohne SuppressWarnings zu entfernen? Wie kann das vermieden werden und / oder gibt es eine andere Alternative dazu?
Soll ich @SuppressWarnings("unchecked")
und verwenden @SuppressWarnings("null")
?
Update Nr. 1
In Bezug auf ungeprüfte Typumwandlungen ist gemäß dieser Antwort (auf die @gnat in den Kommentaren unten hingewiesen hat) die Unterdrückung dieser Warnungen erforderlich.
Viele unverzichtbare Java-Bibliotheken wurden nie aktualisiert, um unsichere Typecasts zu vermeiden. Das Unterdrücken dieser Warnungen ist erforderlich, damit andere wichtigere Warnungen bemerkt und korrigiert werden.
Im Falle der Unterdrückung anderer Warnungen immer noch in einer Grauzone.
Update Nr. 2
Gemäß Oracle Docs (auch in einigen Antworten unten erwähnt):
Aus Stilgründen sollten Programmierer diese Anmerkung immer für das am tiefsten verschachtelte Element verwenden, in dem sie wirksam ist. Wenn Sie eine Warnung in einer bestimmten Methode unterdrücken möchten, sollten Sie diese Methode und nicht ihre Klasse mit Anmerkungen versehen.