Ebben az oktatóanyagban példák segítségével megtudhatjuk, mi is az annotáció, a különböző Java annotációk és hogyan kell használni őket.
A Java kommentárok a program forráskódjának metaadatai (adatok az adatokról).
További információkat nyújtanak a programról a fordítónak, de nem maguk a program részei. Ezek a megjegyzések nem befolyásolják a lefordított program végrehajtását.
A kommentárok ezzel kezdődnek @
. Szintaxisa:
@ MegjegyzésNév
Vegyünk egy példát az @Override
annotációra.
Az @Override
annotáció meghatározza, hogy az ezzel az annotációval megjelölt módszer felülírja a szuperosztály metódusát ugyanazzal a metódusnévvel, visszatérési típussal és paraméterlistával.
A @Override
módszer felülírása nem kötelező . Ha azonban használjuk, a fordító hibát ad, ha valami nem stimmel (például rossz paramétertípus), miközben felülírja a módszert.
1. példa: @ Felülírási példa
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(); ) )
Kimenet
Egy kutya vagyok.
Ebben a példában a módszer displayInfo()
mind a szuperkategóriás állat-, mind az alosztálybeli kutyákban jelen van. Ha ezt a módszert meghívják, akkor az alosztály metódusát hívják meg a szuperosztály metódusának helyett.
Kommentár formátumok
A kommentárok tartalmazhatnak elemeket is (tagok / attribútumok / paraméterek).
1. Jelölő jelölések
A jelölőjegyzetek nem tartalmaznak tagokat / elemeket. Csak nyilatkozat megjelölésére szolgál.
Szintaxisa:
@AnnotationName ()
Mivel ezek a kommentárok nem tartalmaznak elemeket, a zárójelek kizárhatók. Például,
@ Felülírás
2. Egyelemű kommentárok
Egyetlen elem kommentárja csak egy elemet tartalmaz.
Szintaxisa:
@AnnotationName (elementName = "elementValue")
Ha csak egy elem van, akkor szokás ezt az elemet értékként megnevezni.
@AnnotationName (érték = "elementValue")
Ebben az esetben az elem neve is kizárható. Az elem neve alapértelmezés szerint érték lesz.
@AnnotationName ("elementValue")
3. Több elemű kommentárok
Ezek a kommentárok vesszővel elválasztva tartalmaznak több elemet.
Szintaxisa:
@AnnotationName (elem1 = "érték1", elem2 = "érték2")
Megjegyzés elhelyezése
Bármely nyilatkozatot jelöléssel jelölhetünk, ha azt a nyilatkozat fölé helyezzük. A Java 8-tól kezdve a kommentek is elhelyezhetők egy típus előtt.
1. Fent nyilatkozatok
Mint fent említettük, a Java kommentárok elhelyezhetők osztály, metódus, interfész, mező és egyéb programelem deklarációk felett.
2. példa: @SuppressWarnings kommentár példa
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(); ) )
Kimenet
Szavlista => (programiz)
Ha a fenti programot anotáció nélkül állítják össze @SuppressWarnings("unchecked")
, a fordító továbbra is lefordítja a programot, de figyelmeztetéseket ad:
A Main.java nem ellenőrzött vagy nem biztonságos műveleteket használ. Szavlista => (programiz)
Kapjuk a figyelmeztetést
A Main.java nem ellenőrzött vagy nem biztonságos műveleteket használ
a következő állítás miatt.
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
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. Meta-annotations
@Retention
@Documented
@Target
@Inherited
@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.
- Futásidejű utasítások - Néhány annotáció definiálható, hogy futás közben utasításokat adjon a programnak. Ezeket a megjegyzéseket a Java Reflection segítségével érheti el.