4.Annotációk javaban Flashcards

(9 cards)

1
Q

Annotáció fogalma

A

Programkonstrukcióra vonatkozó metaadat, melynek nincs
közvetlen hatása a programvégrehajtásra.
Gépi feldolgozásra alkalmasak, fordítási vagy futási időben elérhetőek
Dokumentációs célokat is szolgálnak

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Lehetséges felhasználás (annotáció)

A

Információ szolgáltatás fordítónak:például tekintsen el
bizonyos figyelmeztetésektől, jelezzen bizonyos hibákat.

Kódgenerálás: pl: lombok

Futásidejű feldolgozás: Egységtesztek, prezisztencia, Http kliensek, Dependency injection, alkalmazás keretrendszer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Annotációk szintaxisa

A

-Egy annotáció interfész neve
-Opc: egy lista melyet vesszővel elválasztott elem-érték párok alkotnak
-Annotációt az annotáció interfész annotációjának nevezzük
Ekvivalensek:
@Target({ElementType.METHOD})
@Target(ElementType.METHOD)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Annotációk fajtái

A

Közönséges:
@XmlElement(name = “creator”,
namespace = “http://purl.org/dc/terms/”,
required = true)

Egyértelmű:
@SuppressWarnings(value = “unchecked”)
@SuppressWarnings(“unchecked”)

Jelölő: ha nincs megadva egyetlen elem-érték pár sem, akkor elhagyhatók a () karakterek.
@NotNull
@NotNull()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Annotáció hol alkalmazható

A

Deklarációkra:
nevezzük a deklaráció kontextusban
előforduló annotációkat.
-Konstruktor
-osztályváltozó
-enum konstans
-lokális változó
-metódus,
-modul
-csomag
-formális paraméter
-osztály
-interfész (beleértve az
annotáció interfészeket is)
-enum
-típusparaméter,
-rekord és rekord
-komponens (Java SE 16) deklarációjára

Típus annotációk: nevezzük a típus kontextusban előforduló annotációkat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Előre definiált annotció interfészek

A

Az előre definiált annotáció interfészeket kivéve a nyelvben nincs az annotációknak speciális jelentése.

Azonban az előre definiált annotáció interfészek annotációinak speciális jelentése van, mely a fordításra is hatással van.

@Deprecated

Az annotációval ellátott elem használata kerülendő, mert például
veszélyes vagy jobb alternatíva létezik helyette
@SuppressWarnings

Azt jelzi a fordító számára, hogy el kell tekinteni az annotált elemen (és a benne tartalmazott programelemeknél) az adott figyelmeztetésektől.
@Override

Azt jelzi, hogy a megjelölt metódus felülír egy olyan metódust, mely egy ősosztályban került deklarálásra. (Nem kötelező megadni de segít hibák megelőzésében)
@FunctionalInterface:

Annak jelzésére szolgál, hogy egy interfész funkcionális.
A funkcionális interfészeknek pontosan egy absztrakt metódusa van

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Meta annotációk

A

Meta-annotációnak nevezünk egy annotáció interfész deklaráción megjelenő annotációt.

Metaadatokat szolgáltatnak az annotáció
interfészekről.

@Documented
Azt jelzi, hogy a megjelölt annotáció interfész annotációinak használata
meg kell, hogy jelenjen az API dokumentációban

@Inherited
Azt jelzi, hogy egy annotáció interfész automatikusan öröklődik

@Repeatable
A megjelölt annotáció interfész annotációi akár többször is alkalmazhatók ugyanarra a deklarációra vagy típus használatra

@Retention
Meghatározza a megjelölt annotáció interfész annotációihoz a tárolás módját, az alábbi lehetőségek választhatóak

SOURCE: a fordító figyelmen kívül hagyja az
annotációkat.
CLASS: fordító eltárolja az annotációkat a
bájtkódban, de azok futásidőben nem elérhetők.
RUNTIME: a fordító eltárolja az annotációkat a
bájtkódban és azok futásidőben is hozzáférhetők.

@Target
Meghatározza, hogy az annotáció interfész hol használható

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Annotáció interfészek deklarálása

A

módosítók @interface name { deklarációk }
Törzsben megengedett deklarációk:
Osztály dek.
Interfész dek.
Konstans dek.
Speciális metódus dek.
A metódus deklarációkban nem megengedettek formális paraméterek,
típusparaméterek és throws kulcsszó sem.
Nem megengedettek a private, default és static módosítók.

visszatérési érték:
Primitív típus
String
Class or Class<T1, …, Tn>
enum típus
Annotáció interfész típus
Olyan tömb, mely elemeinek típusa az előzőek valamelyike

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Deklaráció és típus annotációk

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly