Kihagyás

Annotációk

Az előadás videója elérhető a itt.

Annotációk

Az osztályok definiálása mellett a Java nyelvben van egy olyan lehetőségünk, hogy úgynevezett annotációk segítségével a programot kiegészítő adatokkal (metaadatokkal) lássuk el. Ezeket különböző programkód elemekhez rendelhetjük (csomagokhoz, típusokhoz, metódusokhoz, attribútumokhoz, konstruktorokhoz, lokális változókhoz).

Ezek a plusz információk információt adhatnak a fordítók, illetve más speciális eszközök számára. Bár közvetlen hatással nincsenek a kód működésére, közvetetten segítik annak karbantarthatóságát, fejlesztését, tesztelését.

Felhasználási mód szerint az annotációknak három típusát különböztetjük meg:

  1. Információkat szolgáltat a fordítónak hiba detektáláshoz
  2. Fordítási és fejlesztési idejű utasításokat ad (kód, XML, dokumentum generáláshoz)
  3. Futásidejű utasításokat ad, amelyeket a java reflection által feldolgozhatunk (pl.: objektum tulajdonságainak ellenőrzéséhez)

Vannak eleve definiált annotációk, de mi magunk is írhatunk.

Annotáció példák

Írhatunk például fordítónak szóló annotáció az @Override által, amely előírja, hogy az adott metódus egy ős osztálybeli metódus felülírt változata. Ha ez mégsem lenne így (azaz nincs ősosztály, vagy abban nincs meg az adott metódus), akkor fordítási hibát kapnánk:

1
2
3
4
5
6
7
public class A {
    public void method() {}
}
public class B extends A {
    @Override
    public void method() {}
}

Annotációval jelölhetjük azt is, hogy adott osztály elavult, az osztály használata nem javasolt. Ehhez a @Deprecated annotációt használjuk. A fordító hibaüzenetet ad erre, maga a fordítás nem hiúsul azonban meg:

1
2
3
4
5
6
/**
 * @deprecated  A D osztaly hasznalatat a 10.3-as verziotol
 *              a D2 osztaly valtja ki.
 */
@Deprecated
public class D {}

Lehet annotációt írni a fordítóprogram bizonyos hibaüzeneteinek/figyelmeztetéseinek letiltására. Ilyenkor az annotáció paramétere a letiltandó figyelmeztetések nevét tartalmazó tömb:

1
2
3
4
5
6
public class C {
    @SuppressWarnings({"deprecation"})
    public void method() {
        D obj = new D();
    }
}

Utolsó frissítés: 2021-05-04 07:53:32