Adnotacje w Javie: rodzaje, zastosowania i przykłady

Opublikowany: 2022-05-19

Adnotacja w języku programowania, takim jak Java, odnosi się do metadanych składniowych, które można zintegrować z kodem źródłowym Java. Można opisywać różne czynniki, takie jak pakiety Java, zmienne, klasy, parametry i metody. Programiści mogą łatwo odczytywać adnotacje Java bezpośrednio z plików źródłowych, podobnie jak znaczniki Javadoc.

Adnotacje Java mogą być również dołączane i odczytywane z wyjściowych plików klas Java kompilatora Java. Dzięki temu maszyna wirtualna Java może utrzymywać adnotacje i odczytywać je przez odbicie w czasie wykonywania. W Javie możliwe jest budowanie meta-adnotacji z już istniejących.

Oto kilka podstaw adnotacji w Javie:

  1. Adnotacje zawsze zaczynają się od „@”. Na przykład: „@override”, „@target”, „@SuppressWarnings” itp.
  2. Adnotacje nie wpływają na zachowanie skompilowanego programu.
  3. Adnotacje pomagają w kojarzeniu metadanych z komponentami programu, takimi jak metody, klasy, zmienne itp.
  4. Adnotacje to nie tylko komentarze, ponieważ mogą wpływać na sposób przetwarzania programu przez kompilator. Oferują one dodatkowe informacje kompilatora o programie, ale nie są częścią samego programu. Dlatego te adnotacje nie wpływają na wykonanie skompilowanego programu.

Spis treści

Rodzaje adnotacji w Javie

1. Adnotacje o pojedynczej wartości

Adnotacje z pojedynczą wartością dopuszczają tylko jeden skrócony formularz, ponieważ zawierają tylko jeden element. Członkowi należy nadać wartość po zastosowaniu adnotacji. Nie trzeba jednak podawać nazwy adnotacji. Członek musi mieć wartość, jeśli ma być użyty skrót. Na przykład:

@TestAnnotation("testowanie");

2. Pełne adnotacje

Pełne adnotacje składają się z różnych danych, takich jak składowe danych, wartości, pary i nazwy.

Na przykład:

@TestAnnotation(owner=”Rahul”, value=”Class Geeks”)

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

3. Powtarzające się adnotacje

Gdy adnotację można zastosować do pojedynczych obiektów więcej niż jeden raz, jest ona oznaczana jako powtarzająca się adnotacja. Powtarzające się adnotacje są określane za pomocą tagu @Repeatable zgodnie z definicją w pakiecie java.lang.annotation. Jego pole wartości wskazuje typ kontenera powtarzanej adnotacji.

Kontener jest zdefiniowany jako adnotacja z polem wartości, które zawiera tablicę powtarzających się adnotacji. Aby utworzyć powtarzającą się adnotację, najpierw utwórz adnotację kontenera, a następnie określ typ adnotacji jako dane wejściowe do adnotacji @Repeatable.

Na przykład:

// Program Java do demonstrowania powtarzalnej adnotacji

// Importowanie wymaganych klas

importowanie adnotacji java.lang.Adnotation;

import java.lang.adnotacji.Powtarzalne;

import java.lang.adnotation.Retention;

import java.lang.adnotation.RetentionPolicy;

import java.lang.reflect.Metoda;

// Spraw, aby adnotacja słów była powtarzalna

@Retention(RetentionPolicy.RUNTIME)

@Repeatable(MyRepeatedAnnos.class)

@interfejsowe słowa

{

Ciąg word() domyślnie „Cześć”;

int wartość() domyślnie 0;

}

// Utwórz adnotację kontenera

@Retention(RetentionPolicy.RUNTIME)

@interface MyRepeatedAnnos

{

Słowa[] wartość();

}

klasa publiczna Główna {

// Powtórz słowa na nowej metodzie

@Words(słowo = „Pierwszy”, wartość = 1)

@Words(słowo = „Drugi”, wartość = 2)

public static void newMethod()

{

Główny obiekt = nowy Main();

próbować {

Klasa<?> c = obj.getClass();

// Uzyskaj adnotację dla newMethod

Metoda m = c.getMethod(„nowaMetoda”);

// Wyświetl powtarzaną adnotację

Adnotacja

= m.getAnnotation(MyRepeatedAnnos.class);

System.out.println(ano);

}

złapać (NoSuchMethodException e) {

System.out.println(e);

}

}

public static void main(String[] args) { nowaMetoda(); }

}

Ostateczny wynik to: @MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})

Poznaj nasze popularne kursy inżynierii oprogramowania

SL. Nie Programy rozwoju oprogramowania
1 Master of Science in Computer Science z LJMU i IIITB Program certyfikacji cyberbezpieczeństwa Caltech CTME
2 Pełny Bootcamp rozwoju stosu Program PG w Blockchain
3 Executive Post Graduate Programme in Software Development - specjalizacja w DevOps Wyświetl wszystkie kursy inżynierii oprogramowania

3. Adnotacje do znaczników

Adnotacje znaczników służą wyłącznie do celów deklaracji. Ta adnotacja nie zawiera żadnych członków ani nie istnieją w niej żadne dane. Jego jedynym celem jest utrzymanie obecności jako adnotacji. Na przykład: @Zastąp.

4. Wpisz adnotacje

Te adnotacje mogą być używane wszędzie tam, gdzie używany jest typ. Na przykład możemy opisać typ zwracanej metody. Adnotacje typu są oznaczane adnotacją @Target.

Kod, który może ilustrować adnotacje typu to:

// Importowanie wymaganych klas

import java.lang.adnotation.ElementType;

import java.lang.adnotation.Target;

// Używanie adnotacji docelowej do adnotacji typu

@Target(TypElementu.TYPE_USE)

// Deklarowanie adnotacji typu prostego

@interface TypeAnnoDemo{}

// Główna klasa

klasa publiczna GFG {

// Metoda głównego sterownika

public static void main(String[] args) {

// Adnotacja typu ciągu

@TypeAnnoDemo String string = „Ten kod jest opatrzony adnotacją typu”;

System.out.println(ciąg);

ABC();

}

// Adnotacja zwracanego typu funkcji

static @TypeAnnoDemo int abc() {

System.out.println("Typ zwracany tej funkcji jest opisany");

zwróć 0;

}

Przykłady predefiniowanych adnotacji

Istnieje wiele odmian predefiniowanych adnotacji, o których wspominaliśmy wcześniej. Przyjrzyjmy się:

1. @Zastąp

Ta adnotacja znacznika może być używana tylko w metodach. Każda metoda z adnotacją @override musi zastąpić inną metodę z nadklasy. Jeśli to się nie powiedzie, zostanie wyzwolony błąd w czasie kompilacji. Dzieje się tak, ponieważ musi zapewnić, że nadklasa zostanie faktycznie nadpisana, a nie tylko przeciążona.

Kod, który może zilustrować adnotację zastąpienia, to:

// Klasa 1

klasa podstawowa

{

public void Display()

{

System.out.println("Wyświetlacz bazowy()");

}

public static void main(String args[])

{

Podstawa t1 = nowa Pochodna();

t1.Wyświetlacz();

}

}

// Klasa 2

// Rozszerzenie poza klasę

klasa Pochodna rozszerza Base

{

@Nadpisanie

public void Display()

{

System.out.println(„Wyświetlanie pochodne ()”);

}

}

2. @Cel

Ma być używany tylko jako adnotacja do innej adnotacji. @Target akceptuje jeden parametr, który musi być stałą ElementType. Parametr decyduje, do których deklaracji można go zastosować. Adnotacja @Target może mieć wiele wartości zamiast pojedynczej wartości. Jeśli jednak trzeba zadeklarować wiele wartości, musi to być w postaci nawiasów klamrowych, takich jak: @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE}).

W tym miejscu można użyć adnotacji @Retention, aby określić stan przechowywania adnotacji. Na adnotację @Retention mają wpływ trzy czynniki:

  • Źródło: kompilator ignoruje adnotacje, ponieważ są one zwykle przechowywane na poziomie źródła.
  • Runtime: jest zachowywany w czasie wykonywania.
  • Klasa: adnotacje pozostają w czasie kompilacji i są ignorowane przez program Java.

3. @Dziedziczony

Ta adnotacja może być używana tylko do celów deklaracji, a zatem wpływa tylko na niektóre deklaracje klas. Jedna adnotacja może zastąpić drugą i odziedziczyć jej właściwości. W ten sposób nadklasę można sprawdzić, jeśli w podklasie nie ma określonych adnotacji. Jeśli jednak adnotacja jest obecna, otrzymuje adnotację @Inherited.

Na przykład:

// Klasa 1

klasa PrzestarzałyTest

{

@Przestarzałe

public void Display()

{

System.out.println("Przestarzały ekran testowy()");

}

}

// Klasa 2

Klasa publiczna Pomiń OstrzeżenieTest

{

// Jeśli skomentujemy poniżej adnotację, program wygeneruje

// ostrzeżenie

@SuppressWarnings({„sprawdzone”, „wycofane”})

public static void main(String args[])

{

Test przestarzały d1 = new Test przestarzały();

d1.Wyświetlacz();

}

}

Wniosek

Tutaj dowiedzieliśmy się o adnotacjach w Javie. Dowiedzieliśmy się również o typach adnotacji w Javie i ich zastosowaniach, które mogą pomóc programistom Java w łatwym tworzeniu solidnych i skalowalnych programów.

Jeśli chcesz dowiedzieć się więcej o koncepcjach Java, certyfikacja PG związana z pracą w inżynierii oprogramowania upGrad jest najlepszym sposobem, aby uzyskać wszechstronną wiedzę na temat języków programowania, takich jak Java, HTML, JS, a także innych narzędzi programistycznych i bibliotek.

Program jest przeznaczony dla studentów ostatniego roku lub bezrobotnych absolwentów, którzy chcą uzyskać pozycje na poziomie podstawowym w tej dziedzinie. 5-miesięczny kurs obejmuje specjalizację w MERN / Cloud-Native i pomaga uczniom zbudować najwyższej klasy portfolio, wystawiając ich na 5 praktycznych projektów.

Więc nie czekaj. Udaj się do uaktualnienia i zarezerwuj miejsce już dziś!

Co to są adnotacje @jsonproperty?

Adnotacje Jsonproperty umożliwiają deweloperom mapowanie kluczy JSON z nazwami właściwości podczas serializacji i deserializacji. Na podstawie domyślnych ustawień Java klucze są mapowane na pola POJO podczas serializacji. Adnotacje Json pomagają zastąpić tę domyślną funkcję za pomocą atrybutów ciągu, które wskazują zamapowaną nazwę.

Czym są adnotacje hibernacji?

Adnotacje hibernacji to kolejna technika określania metadanych podczas mapowania obiektu i tabeli relacyjnej. Są potężną i stosunkowo nową metodą mapowania, której można używać zamiast metadanych mapowania XML. Korzystając z adnotacji hibernacji, użytkownicy mogą przechowywać metadane w pojedynczym pliku Java POJO, który zawiera również kod, pomagając w ten sposób lepiej zrozumieć strukturę tabeli.

Co to są @SuppressWarnings?

Adnotacja @SuppressWarnings powiadamia kompilator o pominiętych ostrzeżeniach. Powiadomienia są prezentowane w formie ciągu według nazwy. Można go złożyć na dowolny rodzaj deklaracji. Java dzieli ostrzeżenia na dwie klasy, a mianowicie niesprawdzone i przestarzałe. Gdy starszy kod wchodzi w interakcję z kodem opartym na rodzajach, generowane jest niesprawdzone ostrzeżenie.