2011-12-20 14 views
5

Nie rozumiem tej funkcji Java. Wiem, że to ułatwia kodowanie, a czasem wygląda ładniej, ale jakie jest rzeczywiste użycie tego? Wręcz przeciwnie, wydaje mi się, że lepiej jest wyświetlać ostrzeżenia, ponieważ w przyszłości każdy może je odnieść przed wprowadzeniem modyfikacji kodu. Czy to @SuppressWarnings zwiększa wydajność uzupełniającą LUB czy jest to zgodne z normami kodowania?Co to jest użycie @SuppressWarnings

Odpowiedz

5

Inne odpowiedzi już wyjaśniono przypadków użycia z @SuppressWarnings dużo, ale chcę podkreślić punkt że czasami koniecznie musisz użyć @SuppressWarnings przezwyciężyć ograniczenia języka samego, iw tych przypadkach stosowania @SuppressWarnings jest całkowicie legalny .

W innych przypadkach użycie @SuppressWarnings można uznać za wątpliwe, ponieważ w takich przypadkach zawsze można pozbyć się ostrzeżeń, zmieniając kod (choć oczywiście nie zawsze jest to akceptowalne).

Oto kilka typowych przypadków, kiedy absolutnie nie może pozbyć się ostrzeżenia bez @SuppressWarnings:

  • wykonawcze tablicę oparciem kolekcji generycznych (ponieważ nie można stworzyć ogólną tablicę)
  • Map z klas ich implementacje (ponieważ nie można przypisać różnych wartości parametru rodzajowego do różnych wejść na mapę)
1

Rzeczywistym zastosowaniem jest wyłączenie ostrzeżeń. to jest to! Nic mniej, nic więcej. Nie sądzę, że ma to wpływ na wydajność kompilacji, ale zdecydowanie nie działa w czasie.

3

Jeśli chodzi o starszy kod, który nie obsługuje generycznych (Java < = 1.4), jest to jedyny skuteczny sposób na pozbycie się rzucanych ostrzeżeń.

+2

'SuppressWarnings' są używane nie tylko do obsługi generycznych programów lub wysyłania ostrzeżeń. –

+1

kto mówi, że są :)? –

+0

Ponownie przeczytaj swój wpis. –

9

Podczas programowania należy uważać na ostrzeżenia kompilatora iw najlepszym przypadku skompilować swój kod bez ostrzeżeń (i oczywiście błędów).

Czasami jednak nie można pozbyć się ostrzeżenia i WIEM, że kod jest poprawny lub nie można go zmienić. Wtedy nie chcesz, aby za każdym razem niepokoił Cię kompilator, że coś jest nie tak.

Można go więc powstrzymać za pomocą wspomnianego polecenia.

1

Użycie SuppressWarnings ma być używane podczas kompilacji (tak, tylko kompilator wie, co zrobić, gdy widzi adnotację SuppressWarnings).

W JavaDoc stany:

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name.

1

Istnieje kilka powodów, dla korzystania @SuppressWarnings ale jednym z najbardziej użytecznych przypadków są:

  • uwzględniając istniejący projekt z tysiącami ostrzeżeń. Chcesz, aby zespół zajął się teraz ostrzeżeniami, ale nie masz czasu na naprawę wszystkich ostrzeżeń.

    Adnotacja umożliwia stłumienie niektórych ostrzeżeń, których nie można szybko naprawić i uzyskać "czystą" bazę.

    Ta czysta baza jest niezbędna, ponieważ nikt nie będzie bał się sprawdzać kodu z ostrzeżeniami, gdy są ich tysiące, ale będą się bali, gdy baza kodów będzie wolna od ostrzeżeń, a wszyscy pozostali w zespole natychmiast zobaczą, kiedy ktoś jest sprawdzanie kodu z 2 ostrzeżeniami.

  • Korzystasz z bibliotek stron trzecich i dlatego denerwują Cię ostrzeżenia, których nie możesz naprawić, z wyjątkiem zmiany kodu lib, czego nie chcesz w większości przypadków.

Moim zdaniem pierwszy powód jest jednym z najlepszych przypadków użycia dla @SuppressWarnings.