Część 1. Bardzo krótko napisałem o adnotacjach typu SOURCE i CLASS. Warto to przeczytać, żeby nie pogubić się w drugiej części i trochę poszerzyć swoje "nieporozumienie" =) Obiecuję, że na pewno będzie chociaż jedno słowo, które znasz! Adnotacje.  Część 1 — trochę nudno — 1 Kiedy po raz pierwszy zobaczyłem adnotacje w zadaniach tutaj, jakoś nie zwróciłem na nie większej uwagi. Tu i tam jest @Override, ale IDEA dodaje to, więc pomyślałem, że tak musi być. Z biegiem czasu zdałem sobie sprawę, że wszystko jest znacznie głębsze. Podczas studiowania adnotacje mogą wydawać się nieco bezużyteczne, ale konieczne. Nie wiesz, dlaczego istnieją i co robią. Przeczytałeś kilka artykułów, w których napisano: „to wspaniale, że mamy teraz adnotacje, wszystko stało się takie proste”. Ale nie wiedziałem, jak było wcześniej i nie rozumiałem, że teraz jest łatwiej. Teraz już wiem i chcę się trochę podzielić. Istnieją 3 typy adnotacji (RetentionPolicy):
  • ŹRÓDŁO — Adnotacje dla kompilatora
  • KLASA — Informacje z adnotacji zostaną zapisane w kodzie bajtowym, ale nie będą dostępne w czasie wykonywania. Mówią, że standardowa biblioteka ma wiele adnotacji tego typu, które są teraz zachowywane w celu zachowania zgodności wstecznej. Jest to używane do bardzo konkretnych zadań.
  • Pytania i odpowiedzi na StackOverflow
  • RUNTIME — te adnotacje są najbardziej popularne. Są używane podczas wykonywania kodu.
Wprowadzenie zajęło część artykułu, więc tutaj napiszę o adnotacjach SOURCE i CLASS. Oto adnotacje, które udało mi się znaleźć (dzięki zadaniu 3607). Nie będę odnosić się do adnotacji środowiska uruchomieniowego — jest ich zbyt wiele i nie są tematem tego artykułu. ŹRÓDŁO:
  • java/lang/annotation/Native.class;
  • java/lang/SuppressWarnings.class
  • javax/annotation/Generated.class
  • java/lang/Override.class
KLASA: Nie wiem, dlaczego adnotacje CLASS są konieczne. Nigdzie nie można znaleźć dokumentacji istniejących adnotacji, więc myślę, że możesz po prostu zostawić ten bagaż. Ale jeśli znajdziesz to podziel się. Adnotacje ŹRÓDŁA:
  1. Native — Zmienna z tą adnotacją może odnosić się do kodu natywnego;
  2. SuppressWarnings — Ta adnotacja pomija różne ostrzeżenia kompilatora;
  3. Wygenerowany — ta adnotacja oznacza kod źródłowy, który został wygenerowany;
  4. Override — Ta adnotacja sprawdza nadpisania metod.
Po więcej informacji:

@Rodzinny

Native — nigdy tego nie widziałem i nigdy tego nie używałem. Myślę, że jest to raczej rzadka adnotacja, ponieważ jest używana, gdy trzeba uruchomić kod w innym „rodzimym” języku. Próbowałem i nie udało mi się znaleźć wyraźnej wzmianki o tym.

@Tłumić ostrzeżenia

SuppressWarnings — Ta adnotacja jest często używana w następujący sposób: @SuppressWarnings("unchecked"). Służy do pomijania ostrzeżeń, o których już wiesz. Poprzedni przykład pomija ostrzeżenia o niesprawdzonych konwersjach typu. Ponownie, jest to jedyne użycie, z jakim się spotkałem.

@Wygenerowane

Wygenerowane — napotykam teraz tę adnotację ze względu na zadanie, w którym muszę wygenerować klasy z plików XSD. Te 3 adnotacje są dość specyficzne i najprawdopodobniej obecnie nie są dla Ciebie interesujące. Opiszę ostatni.

@Nadpisanie

Zastąp — Używasz go stale i robi coś bardzo przydatnego. Podczas zastępowania metody łatwo popełnić błąd bez pomocy IDEA. Niezależnie od tego, czy są to literówki, czy proste błędy, pomyłki się zdarzają. Ta adnotacja upewni się, że metoda w klasie nadrzędnej jest zgodna z naszą (z adnotacją) metodą. Gwarantuje to, że metoda zostanie zastąpiona, a nie dodana. Podczas refaktoryzacji kodu metoda nadrzędna może zostać usunięta lub zmieniona. Ponownie ta adnotacja wskaże błąd. Bez tego nasza metoda zostałaby po prostu dodana. Nudny? Powiedziałbym tak. Nie ma wiele pomocnych informacji z tego artykułu. Prawie wszystko (90%) tutaj opisuje coś, czego nigdy nie będziesz używać lub bardzo rzadko. Pozostałe 10% to przywitanie i opisanie adnotacji @Override, która na pierwszy rzut oka jest bezużyteczna. To powiedziawszy, myślę, że w drugiej części artykułu będzie bardziej interesująco. Omówione zostaną adnotacje RUNTIME — wchodzą w interakcję z kodem podczas jego wykonywania i uprawiają czarną magię. Adnotacje. Część 2. Lombok