„Java“ anotacijos (su pavyzdžiais)

Šioje pamokoje su pavyzdžių pagalba sužinosime, kas yra anotacijos, skirtingos „Java“ anotacijos ir kaip jas naudoti.

„Java“ anotacijos yra mūsų programos šaltinio kodo metaduomenys (duomenys apie duomenis).

Jie pateikia kompiliatoriui papildomos informacijos apie programą, tačiau nėra pačios programos dalis. Šios anotacijos neturi įtakos sudarytos programos vykdymui.

Anotacijos prasideda @. Jo sintaksė yra:

 @AnnotationName 

Paimkime @Overrideanotacijos pavyzdį .

Į @Overrideanotacija nurodoma, kad metodas, kuris buvo pažymėtas šiuo anotacija viršesnis už superclass su tuo pačiu metodu pavadinimas, grąžinimo tipo ir parametrų sąrašo metodą.

Neprivaloma naudoti, @Overridekai viršijamas metodas. Tačiau jei mes jį naudojame, kompiliatorius pateikia klaidą, jei kažkas neteisingas (pvz., Neteisingas parametro tipas), nepaisydamas metodo.

1 pavyzdys: @ nepaisyti anotacijos pavyzdžio

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Rezultatas

 Aš esu šuo. 

Šiame pavyzdyje metodas displayInfo()yra ir superklasės gyvūnų, ir poklasio šunų. Kai šis metodas yra vadinamas, poklasio metodas vadinamas vietoj metodo superklase.

Anotacijų formatai

Anotacijose taip pat gali būti elementų (nariai / atributai / parametrai).

1. Žymeklio anotacijos

Žymeklio anotacijose nėra narių / elementų. Jis naudojamas tik deklaracijai žymėti.

Jo sintaksė yra:

 @AnnotationName () 

Kadangi šiose anotacijose nėra elementų, skliaustų galima išskirti. Pavyzdžiui,

 @ Nepaisyti 

2. Vieno elemento anotacijos

Vieno elemento anotacijoje yra tik vienas elementas.

Jo sintaksė yra:

 @AnnotationName (elementNAME = "elementValue") 

Jei yra tik vienas elementas, įprasta tą elementą įvardyti kaip vertę.

 @AnnotationName (reikšmė = "elementValue") 

Tokiu atveju galima išskirti ir elemento pavadinimą. Pagal numatytuosius nustatymus elemento pavadinimas bus vertė.

 @AnnotationName ("elementValue") 

3. Kelių elementų anotacijos

Šiose anotacijose yra keli kableliais atskirti elementai.

Jo sintaksė yra:

 @AnnotationName (elementas1 = "reikšmė1", elementas2 = "reikšmė2") 

Anotacijų talpinimas

Bet kurią deklaraciją galima pažymėti anotacijomis, dedant ją virš tos deklaracijos. Nuo „Java 8“ anotacijos taip pat gali būti dedamos prieš tipą.

1. Virš deklaracijų

Kaip minėta aukščiau, „Java“ anotacijos gali būti išdėstytos virš klasės, metodo, sąsajos, lauko ir kitų programos elementų deklaracijų.

2 pavyzdys: @SuppressWarnings anotacijos pavyzdys

 import java.util.*; class Main ( @SuppressWarnings("unchecked") static void wordsList() ( ArrayList wordList = new ArrayList(); // This causes an unchecked warning wordList.add("programiz"); System.out.println("Word list => " + wordList); ) public static void main(String args()) ( wordsList(); ) ) 

Rezultatas

 Žodžių sąrašas => (programiz) 

Jei pirmiau minėta programa yra kompiliuojama nenaudojant @SuppressWarnings("unchecked")anotacijos, kompiliatorius vis tiek sukompiliuos programą, tačiau duos tokius įspėjimus:

„Main.java“ naudoja nepatikrintas arba nesaugias operacijas. Žodžių sąrašas => (programiz)

Gauname įspėjimą

 „Main.java“ naudoja nepatikrintas arba nesaugias operacijas 

dėl šio teiginio.

 ArrayList wordList = new ArrayList(); 

This is because we haven't defined the generic type of the array list. We can fix this warning by specifying generics inside angle brackets .

 ArrayList wordList = new ArrayList(); 

2. Type annotations

Before Java 8, annotations could be applied to declarations only. Now, type annotations can be used as well. This means that we can place annotations wherever we use a type.

Constructor invocations

 new @Readonly ArrayList() 

Type definitions

 @NonNull String str; 

This declaration specifies non-null variable str of type String to avoid NullPointerException.

 @NonNull List newList; 

This declaration specifies a non-null list of type String.

 List newList; 

This declaration specifies a list of non-null values of type String.

Type casts

 newStr = (@NonNull String) str; 

extends and implements clause

 class Warning extends @Localized Message 

throws clause

 public String readMethod() throws @Localized IOException 

Type annotations enable Java code to be analyzed better and provide even stronger type checks.

Types of Annotations

1. Predefined annotations

  1. @Deprecated
  2. @Override
  3. @SuppressWarnings
  4. @SafeVarargs
  5. @FunctionalInterface

2. Meta-annotations

  1. @Retention
  2. @Documented
  3. @Target
  4. @Inherited
  5. @Repeatable

3. Custom annotations

These annotation types are described in detail in the Java Annotation Types tutorial.

Use of Annotations

  • Compiler instructions - Annotations can be used for giving instructions to the compiler, detect errors or suppress warnings. The built-in annotations @Deprecated, @Override, @SuppressWarnings are used for these purposes.
  • Compile-time instructions - Compile-time instructions provided by these annotations help the software build tools to generate code, XML files and many more.
  • Vykdymo nurodymai - kai kurias anotacijas galima apibrėžti, kad programos pateiktų vykdymo metu. Šias anotacijas galite pasiekti naudodami „Java Reflection“.

Įdomios straipsniai...