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!
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):
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ę.
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.
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.
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.
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.
- Ź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.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- ,Java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- Natywny – zmienna pod tą adnotacją może odnosić się do kodu natywnego;
- SuppressWarnings – pomija różne ostrzeżenia kompilatora;
- Wygenerowany – oznacza wygenerowany kod źródłowy;
- Override – sprawdza nadpisanie metody.
GO TO FULL VERSION