Używam @SuppressWarnings("unchecked")
i @SuppressWarnings("null")
głównie powyższych metod, aby umożliwić kompilację kodu bez ostrzeżeń, ale mam wątpliwości. Znaleziono to pytanie Stackoverflow . Jon Skeet napisał odpowiedź , która wydaje mi się intrygująca.
Według niego,
Czasami ogólne elementy języka Java po prostu nie pozwalają ci robić tego, co chcesz, i musisz skutecznie powiedzieć kompilatorowi, że to, co robisz, będzie legalne w czasie wykonywania.
Ale co, jeśli istnieje szansa, że zostanie zgłoszony wyjątek? Czy więc tłumienie ostrzeżeń nie jest złym pomysłem? Czy nie powinienem zdawać sobie sprawy z miejsc, w których mogą pojawić się problemy?
A co, jeśli ktoś inny zmodyfikuje mój kod później i doda wątpliwą funkcjonalność bez usuwania SuppressWarnings? Jak można tego uniknąć i / lub czy istnieje jakaś inna alternatywa?
Czy powinienem używać @SuppressWarnings("unchecked")
i @SuppressWarnings("null")
?
Aktualizacja nr 1
Jeśli chodzi o rzutowanie typu niezaznaczonego, zgodnie z tą odpowiedzią (wskazaną przez @gnat w komentarzach poniżej) konieczne jest ukrycie tych ostrzeżeń.
Wiele niezbędnych bibliotek Java nigdy nie zostało zaktualizowanych w celu wyeliminowania potrzeby tworzenia niebezpiecznych typecastów. Tłumienie tych ostrzeżeń jest konieczne, aby inne ważniejsze ostrzeżenia zostały zauważone i poprawione.
W przypadku zniesienia innych ostrzeżeń nadal znajduje się w nieco szarym obszarze.
Aktualizacja nr 2
Zgodnie z dokumentami Oracle Docs (wspomnianymi również w niektórych odpowiedziach poniżej):
Ze względu na styl programiści powinni zawsze używać tej adnotacji na najgłębiej zagnieżdżonym elemencie, gdzie jest skuteczny. Jeśli chcesz ukryć ostrzeżenie w określonej metodzie, powinieneś opisać tę metodę, a nie jej klasę.