Úvod Anotace v Javě

Anotace byly zavedeny nebo byly k dispozici ve verzi 1.5 Java Development Kit (JDK). Anotace v Javě poskytují více informací o datech přítomných ve struktuře kódu, tj. Jsou to data o datech známá také jako metadata.

Co jsou anotace v Javě?

Anotace pomáhají definovat metadata v kódu standardizovaným způsobem. Anotace také pomáhají při poskytování pokynů kompilátoru java, které je třeba dodržovat při kompilaci tohoto kódu java.

Při použití anotací používáme znaménko '@' a potom následuje název vaší anotace, takže kompilátor zachází s anotací. Je důležité si uvědomit, že anotace lze přidat dříve,

  • Prohlášení třídy
  • Prohlášení o proměnné člena
  • Prohlášení konstruktéra
  • Prohlášení o metodě
  • Deklarace parametrů
  • Prohlášení o lokální proměnné.

Důležité je zapamatovat si, že všechny anotace rozšiřují rozhraní java.lang.annotation.Annotation. Anotace také nemohou obsahovat žádnou klauzuli rozšíření.

Vestavěné anotace Java

V Javě jsou zabudované anotace jako @Override, @Deprecated, @SuppressWarnings, které jsou navrženy pro konkrétní účel a používají se v jedné z výše uvedených situací, například pouze pro třídu nebo pouze pro metodu, atd.

Příklad č. 1 - Oververide

class Dad (
public void say() (
System.out.println("Do your homework");
)
)
public class Child extends Dad (
@Override
public void say()(
System.out.println("I wanna play");
)
public static void main(String args())(
Dad daddy = new Child();
daddy.say();
)
)

Výstup

Příklad č. 2 - Nepřijatý

public class Outdated
(
@Deprecated
public void oldShow()
(
System.out.println("This Method is deprecated"); )
public static void main(String args())
(
Outdated od = new Outdated ();
od.oldShow();
)
)

Výstup

Meta anotace

Existuje pět typů meta-anotací:

  1. Dokumentováno - Informuje, že člen nebo proměnná nebo třída, která používá tuto anotaci, musí být zdokumentována pomocí Javadocu nebo jiných podobných dostupných nástrojů.
  2. Target - Slouží k určení, ke kterému typu se anotace použije. Většinou se používá spolu s vašimi vlastními anotacemi.
  3. Zděděno - Označuje anotaci, která se má zdědit do podtřídy.
  4. Retention - Udává, jak dlouho mají být anotace s anotovaným typem zachovány. Vezme argument Retention Policy, jehož možné hodnoty jsou: ZDROJ, TŘÍDA a RUNTIME.
  5. Opakovatelné - informuje o tom, že typy anotací, jejichž deklaraci uvádí, jsou opakovatelné.

Příklad - dokumentace a uchování

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface RSample (
String rentent();
)
@Documented
@interface DSample (
String doc();
)
public class MetaAnnotate (
public static void main(String arg())
(
new MetaAnnotate().rentent();
new MetaAnnotate().doc();
)
@RSample (rentent="Meta Info R")
public void rentent() (
System.out.println("Retention Policy Applied");
)
@DSample(doc="Meta Info D")
public void doc() (
System.out.println("Code Documented with the value");
)
)

Výstup

Vysvětlení

RetentionPolicy.RUNTIME - Tato hodnota určuje, že hodnota anotace by měla být k dispozici za běhu, pro inspekci pomocí java reflexe.

Spusťte příkaz Javadoc a zobrazte dokumentaci k vašemu kódu.

Typy anotací

Existují tři kategorie anotací a jsou následující:

1. Anotace markerů - Tyto typy anotací se používají jako deklarace k oznámení vývojáři, o čem je níže uvedená funkce nebo třída, tj. Sdílí další informace o funkci nebo třídě, například zda funkce převažuje jinou funkci nebo je funkce zastaralá. atd. @Override, @Deprecated jsou považovány za anotace markerů.

Příklad: DemoAnnotation ()

2. Anotace s jednou hodnotou - Tento druh anotace nabývá hodnoty k určení té hodnoty pro ten člen, pro kterého je anotace umístěna před, a proto nemusí specifikovat jméno tohoto člena.

Příklad: DemoAnnotation (“custId123”)

3. Úplné anotace - Tento druh anotace má několik hodnot, párů, členů.

Příklad: DemoAnnotation (category = ”Toys”, value = 1500)

Zvyk

Vlastní anotace jsou vytvářeny uživatelským rozhraním, za kterým následuje název anotace, jak uvidíme v níže uvedeném příkladu.

Soubor 1: Definována vlastní anotace

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target((ElementType.TYPE, ElementType.METHOD))
@Retention(RetentionPolicy.RUNTIME)
@interface Magicians
(
String Wizard() default "Reynolds";
String House() default "Green";
)
@Magicians
public class Magician
(
@Magicians(Wizard = "Harry Potter", House = "Red")
public String getString() ( return null; )
)

Soubor 2: Hlavní třída, která volá Třídu vlastních poznámek

import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
public class MyCustomAnnotation
(
public static void main(String() args) throws NoSuchMethodException, SecurityException
(
new Magician();
Class magic = Magician.class;
readAnnotationOn(magic);
Method method = magic.getMethod("getString", new Class()());
readAnnotationOn(method);
)
static void readAnnotationOn(AnnotatedElement element)
(
try
(
System.out.println("\n Find annotations on " + element.getClass().getName());
Annotation() annotations = element.getAnnotations();
for (Annotation annotation : annotations)
(
if (annotation instanceof Magicians)
(
Magicians mData = (Magicians) annotation;
System.out.println("Wizard Name :" + mData.Wizard());
System.out.println("Wizard House Color :" + mData.House());
)
)
) catch (Exception e)
(
e.printStackTrace();
)
)
)

Výstup

Závěr

V tomto článku jsme se dozvěděli, jaké jsou anotace javy a jejich typy s příklady, dále jsme viděli příklady vestavěných anotací poskytovaných javou a kódovali naše vlastní anotace.

Zjistili jsme, že anotace jsou užitečné při standardizaci kódu a také pomáhají lépe porozumět kódu a jeho struktuře.

Doporučené články

Toto je průvodce anotacemi Java. Zde diskutujeme, jak vestavěné anotace Java s uvedenými příklady a výstupy. Další informace naleznete také v následujících článcích -

  1. Proměnné v Javě
  2. Vzory v Javě
  3. Rychlé třídění v Javě
  4. Nejlepší Java překladače
  5. instanceOf v Javě s příkladem

Kategorie: