4.dia Annotációk a Java programozási nyelvben Flashcards

(16 cards)

1
Q

Annotáció fogalma

A

Olyan metaadat a programkonstrukcióhoz, amelynek nincsen közvetlen kihatása a programvégrehajtásra.
Gépi feldolgozásra szolgálnak fordítási illetve akár futási időben. Használható dokumentációra is, tömör formában.

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

Lehetséges felhasználások

A

Fordításidejű feldogozás :
Például tekintsen el egy figyelmeztetéstől vagy jelezzen bizonyos hibákat.
Pl: @Depricated, @Override
Futásidejű feldolgozás :
Vannak olyan annotációk amelyekhez hozzáférhetünk végrehajtás közben is.
Kódgenerálás :
Pl: Dagger, Jakarta XML Binding, Project Lombok
Egységtesztelés: JUnit
Perzisztencia: Jackson, Jakarta Persistence, Jakarta XML Bindig, Jdbi
HTTP kliensek: Feign, Rerofit
Függőség befecskendezés: Guice, Spring Framework
Alkalmazás keretrendszerek: Micronaut Framework, Spring Framework

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

Annotációk szintaxisa

A

Részei:
AnnotációInterfészNeve(Opcionális=Lista,Kulcs=ÉrtékPárokkal)
Az annotáció interfész határozza meg, hogy milyen kulcs-érték párokat lehet megadni. Ha van alapértelmezett érték, azt nem kötelező megadni. Ezeknek a sorrendje nem számít.
Ha egy elem lista, akkor Annot(Opc={Lista,Igy.Kell})

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 annotáció:
Több kulcs-érték párból áll.
Egyelemű annotáció:
Egy kulcs-érték párból áll.
Jelölő annotáció:
Nincsen kulcs-érték pár.
(Elhagyható a zárójel.)

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

Hol alkalmazható annotáció?

A

-Deklarációkra (Deklaráció annotáció):
Konstruktor, metódus, osztályváltozó, lokális változó, formális paramtére, típusparaméter, osztály, interfész (akár annotációs interfészek), enum, enum konstans, rekord, rekord komponens, modul, csomag.
-Deklarációkban és kifejezésekben használt típusokra (Típus annotáció)

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

@Deprecated (Előre definiált annotáció interfészek)

A

Az annotációval ellátott elem használata kerülendő, lehet veszélyes vagy létezik jobb alternatíva.
(Javadocban is érdemes jelezni @depricated)
Következmény: Figyelmeztet amikor ezt az elemet akarjuk használni.
Két eleme van:
since : Melyik verzióban lett elavult. (string)
forRemoval : elem jövőben törlésre fog kerülni. (bool)

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

@SuppressWarnings (Előre definiált annotáció interfészek)

A

Az adott elem és a benne lévő programelemek által adott figyelmeztetéseket ne vegyen figyelembe.

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

@Override (Előre definiált annotáció interfészek)

A

A megjelőlt metódus felülír egy ősosztályban deklarált metódust.
Nem kötelező megadni, de ajánlott a hibák (elírások) elkerülése szempontjából.

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

@FunctionalInterface (Előre definiált annotáció interfészek)

A

Funkcionális interfészt jelez, amelynek pontosan egy absztrakt metódusa van.

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

@Documented (Meta-annotációk)

A

Az általa jelölt annotáció interfész annotációinak használata meg kell, hogy jelenjen az API dokumentációjában. (Ez alapértelmezetten nem történik meg.)

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

@Inherited (Meta-annotációk)

A

Azt jelzi, hogy egy annotáció intefész automatikusan öröklődik. (Alapértelmezetten ilyen nincs.)

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

@Repeatable (Meta-annotációk)

A

Az annotócói interfész akár többször is használható ugyan azon a deklaráción vagy típusok.

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

@Retention (Meta-annotációk)

A

A megjelölt annotáció interfész annotáióhoz határoz meg tárolási módot.
Lehet
RetentionPolicy.SOURCE: a fordító figyelmen kívül hagyja az annotációt.
RetentionPolicy.CLASS: a fordító eltárolja az annotációkat a bájtkódban, de azokat futásidőben nem lehet elérni.
RetentionPolicy.RUNTIME: a fordító a bájtkódban eltárolja az annotációt, és azt el lehet érni futásidőben.

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

@Target (Meta-annotációk)

A

Mgehatározza hogy az annotáció interfész annotációja (milyen deklarációnál) hol használható.
ElementType.ANNOTATION_TYPE : Annotáció intefész
ElementType.CONSTRUCTOR : Konstruktor
ElementType.METHOD : Metódus
ElementType.FIELD : Osztályváltozó, enum konstans
ElementType.LOCAL_VARIABLE : Lokális változó
ElementType.PARAMETER : Formális paraméter
ElementType.TYPE_PARAMETER : Típusparaméter
ElementType.TYPE : Osztály, interfész, enum, rekord
ElementType.TYPE_USE : Típus
ElementType.RECORDE_COMPONENT : Rekord komponens
ElementType.MODULE : Modul
ElementType.PACKAGE : Csomag

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

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

A

módosítók @interface név { deklarációk }
Egy speciális interfészt határoz meg. Nem lehetnek generikusak és nem lehet szülőinterfészük, mindegyik szuper-interfésze a java.lang.annotation.Annotation közönséges interfész.
Törzsében lehet:
Osztály-, (annotation) interfész-, konstans- és speciális metódus deklarációk.
Speciális metódus fog jelenteni egy elemet. Nem lehetnek formális paraméterei, típusparaméterei es throws kulcsszót sem tartalmazhat. Nem lehet ezen túl privát, default és static. Visszatérési értéke megadja az elem típusát:
Primitívek, String, Class vagy Class<T1,..,Tn>, enum, annotációs interfész, ezekből tömb. A ‘default’ kulcsszóval alapértelmezett értéket lehet hozzáadni.

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

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

A

Az annotáció interfész deklaráció határozza meg, hogy melyik.