Anotace Java (s příklady)

V tomto tutoriálu se pomocí příkladů naučíme, co jsou anotace, různé anotace Java a jak je používat.

Anotace Java jsou metadata (data o datech) pro náš zdrojový kód programu.

Poskytují kompilátoru další informace o programu, ale nejsou součástí samotného programu. Tyto anotace nemají vliv na provedení kompilovaného programu.

Poznámky začínají @. Jeho syntaxe je:

 @ Název poznámky 

Vezměme si příklad @Overrideanotace.

Tyto @Overrideanotace určuje, že metoda, která byla označena tímto anotace potlačí metodu rodičovské třídy se stejným názvem metody, návratový typ a seznam parametrů.

Není nutné použít @Overridepři přepsání metody. Pokud jej však použijeme, kompilátor při přepisování metody zobrazí chybu, pokud je něco špatně (například nesprávný typ parametru).

Příklad 1: @Override Příklad anotace

 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(); ) ) 

Výstup

 Jsem pes. 

V tomto příkladu je metoda displayInfo()přítomna jak v nadtřídě Animal, tak v podtřídě Dog. Když je tato metoda volána, je volána metoda podtřídy místo metody v nadtřídě.

Formáty anotací

Anotace mohou také zahrnovat prvky (členy / atributy / parametry).

1. Popisky značek

Anotace značek neobsahují členy / prvky. Používá se pouze pro označení prohlášení.

Jeho syntaxe je:

 @AnnotationName () 

Protože tyto anotace neobsahují prvky, lze závorky vyloučit. Například,

 @ Přepis 

2. Jeden prvek Anotace

Anotace jednoho prvku obsahuje pouze jeden prvek.

Jeho syntaxe je:

 @AnnotationName (elementName = "elementValue") 

Pokud existuje pouze jeden prvek, jedná se o konvenci pojmenování tohoto prvku jako hodnoty.

 @AnnotationName (value = "elementValue") 

V tomto případě lze také vyloučit název prvku. Název prvku bude ve výchozím nastavení hodnotou.

 @AnnotationName ("elementValue") 

3. Víceprvkové anotace

Tyto anotace obsahují více prvků oddělených čárkami.

Jeho syntaxe je:

 @AnnotationName (element1 = "value1", element2 = "value2") 

Umístění anotace

Jakékoli prohlášení lze označit anotací umístěním nad toto prohlášení. Od Java 8 lze anotace také umisťovat před typ.

1. Výše ​​uvedená prohlášení

Jak již bylo zmíněno výše, anotace Java lze umístit nad deklarace třídy, metody, rozhraní, pole a dalších prvků programu.

Příklad 2: @SuppressWarnings Příklad anotace

 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(); ) ) 

Výstup

 Seznam slov => (program) 

Pokud je výše uvedený program kompilován bez použití @SuppressWarnings("unchecked")anotace, kompilátor bude program stále kompilovat, ale zobrazí varování jako:

Main.java používá nekontrolované nebo nebezpečné operace. Seznam slov => (program)

Dostáváme varování

 Main.java používá nekontrolované nebo nebezpečné operace 

z důvodu následujícího tvrzení.

 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.
  • Pokyny za běhu - Některé poznámky lze definovat, aby poskytovaly pokyny programu za běhu. K těmto anotacím se přistupuje pomocí Java Reflection.

Zajímavé články...