JavaRush /Blog Java /Random-PL /Adnotacje. Część pierwsza, trochę nudna

Adnotacje. Część pierwsza, trochę nudna

Opublikowano w grupie Random-PL
Pierwsza część. O adnotacjach z typami SOURCE i CLASS pisałem bardzo krótko. Warto przeczytać, żeby nie zgubić się w drugiej części i zacząć jeszcze trochę „nierozumieć” =) Na pewno znajdzie się tu przynajmniej jedno słowo, które znasz!
Adnotacje.  Część pierwsza, trochę nudna - 1
Kiedy pierwszy raz zobaczyłem ich tutaj z problemami, jakoś ich nie zauważyłem. Cóż, Override się spotyka, zostało napisane przez IDEA, więc tak powinno być. Z czasem zrozumiałem, że wszystko jest o wiele głębsze. Podczas nauki adnotacje wydają się czymś bezużytecznym, ale niezbędnym. Nie wiesz dlaczego to robią. Myślę, że przeczytałem kilka artykułów, powiedzieli: „jak wspaniale, że teraz mamy adnotacje, wszystko stało się takie proste”. Ale nie wiedziałam, jak było wcześniej i nie rozumiałam, że teraz jest łatwiej. Teraz już wiem i chcę Ci trochę opowiedzieć. Istnieją 3 typy adnotacji (RetentionPolicy):
  • ŹRÓDŁO – adnotacje kompilatora
  • KLASA – dane z adnotacji zostaną zapisane do kodu bajtowego, ale nie będą dostępne w trakcie operacji. Piszą, że wiele adnotacji w bibliotece standardowej używa tego typu, a teraz go trzymają ze względu na kompatybilność wsteczną. Używany do bardzo specyficznych zadań.
  • Pytanie i odpowiedź na StackOverflow
  • RUNTIME – najpopularniejszy, używany podczas działania kodu.
Ponieważ część artykułu zajęła wprowadzenie, napiszę tutaj o adnotacjach ŹRÓDŁO i KLASA. Oto streszczenia, które udało mi się znaleźć (dzięki problemowi 3607). O runtime nie piszę, jest ich za dużo i nie to jest tematem 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 potrzebne są adnotacje typu CLASS. Nie mogłem znaleźć dokumentacji dla istniejących adnotacji, więc myślę, że możemy po prostu zostawić ten bagaż. Ale jeśli znajdziesz, udostępnij. ŹRÓDŁO adnotacje:
  1. Natywny – zmienna pod tą adnotacją może odnosić się do kodu natywnego;

  2. SuppressWarnings – pomija różne ostrzeżenia kompilatora;

  3. Wygenerowany – oznacza wygenerowany kod źródłowy;

  4. Override – sprawdza nadpisanie metody.
Więcej szczegółów:
Adnotacje.  Część pierwsza, trochę nudna - 2
Natywny - nigdy nie widziany i nigdy nie używany. Myślę, że jest to dość rzadka adnotacja, ponieważ... używają go, jeśli muszą uruchomić kod w innym „rodzimym” języku. Próbowałem znaleźć jasne odniesienie do niej, ale nie udało mi się.
Adnotacje.  Część pierwsza, trochę nudna - 3
SuppressWarnings - często używane w formie @SuppressWarnings("niezaznaczone"). Służy do ukrywania ostrzeżeń, o których wiesz. Powyższy przykład pomija ostrzeżenia dotyczące rzutowania niesprawdzonych typów. Ponownie spotkałem się z nim tylko w tej formie i zastosowaniu.
Adnotacje.  Część pierwsza, trochę nudna - 4
Wygenerowane - natknąłem się na to teraz, gdy zadanie wymaga wygenerowania klas z plików xsd. Te 3 adnotacje są dość szczegółowe i najprawdopodobniej w tej chwili Cię nie interesują. Opiszę ostatni.
Adnotacje.  Część pierwsza, trochę nudna - 5
Zastąpienie - używasz go cały czas i robi to bardzo pożyteczną rzecz. Zastępując metodę, łatwo jest popełnić błąd, chyba że zrobi to IDEA. Są literówki lub po prostu błędy. Ta adnotacja zapewni, że metoda w klasie nadrzędnej będzie taka sama, jak nasza (oznaczona) metoda. Gwarantuje nam to, że metoda zostanie nadpisana, a nie dodana. Podczas refaktoryzacji kodu metodę można usunąć lub zmienić. Ponownie adnotacja wskaże błąd. Bez tego nasza metoda byłaby po prostu zakończona.
Adnotacje.  Część pierwsza, trochę nudna - 6
Nudny? Powiedziałbym, że tak, nie ma wiele przydatnego do wyciągnięcia z tego artykułu. Niemal wszystko w nim (90%) jest opowieścią o czymś, czego nie użyjesz lub użyjesz, ale bardzo rzadko. Pozostałe 10% to cześć i opis adnotacji Override, która na pierwszy rzut oka jest bezużyteczna. Cóż, myślę, że druga część artykułu będzie ciekawsza. Pojawią się adnotacje RUNTIME, które wchodzą w interakcję z kodem w czasie rzeczywistym i tworzą czarną magię. Adnotacje. Część druga. Lombok.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION