Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaCsilla Halászné Megváltozta több, mint 10 éve
1
Annotációk a Java 5 nyelvben Kozsik Tamás
2
Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz, attribútumokhoz, konstruktorokhoz, lokális változókhoz Plusz információt hordoznak –A Java fordító számára –Speciális eszközök számára
3
Annotációk definiálása és használata public @interface Copyright { String value(); } @Copyright(value="Copyright: Tamás Kozsik") public class Point { public double x, y; public Point(int x, int y){ this.x = x; this.y = y; }
4
Típusok Primitív típusok Referencia típusok –Osztályok Tömbök Felsorolási típusok –Interfészek Annotáció típusok
5
Annotáció típus - szintaxis Majdnem olyan, mint egy interface Speciális szintaxis: @ Megszorítások –Nem lehet generikus –A metódusok benne: nem lehetnek generikusok nem lehet paraméterük a visszatérési érték típusa nem lehet throws-klózuk –Nem lehet szülőinterfésze primitív típus String Class vagy példányosítása Felsorolási típus Annotáció típus Ezekből képzett tömb (1-dim)
6
Annotáció típus - szemantika Interfész Implicit módon kiterjeszti a java.lang.annotation.Annotation interfészt Lehet belőle leszármaztatni Nem lehet rekurzív a definíciója @interface SelfRef { // fordítási hiba SelfRef value(); } Nem ütközhetnek metódusai az Object és az Annotation metódusaival (felüldefiniálás-ekviv.)
7
Annotációk elemei Az annotáció típus definíciójában bevezetett metódusok Nulla, egy vagy több elem –Nulla: marker –Egy: konvenció, hogy a neve „ value ” Alapértelmezett érték rendelhető hozzájuk
8
Több elem, alapértelmezett érték public @interface RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; } @RequestForEnhancement(id=182736, synopsis="Provide time-travel functionality" ) void travelThroughTime(Date dest){ … }
9
Marker annotáció Elhagyható zárójelpár public @interface Preliminary {} @Preliminary public class ApplePie { … }
10
Egy elemet tartalmazó annotáció Ha az elem neve value Vagy, ha több elem, a többinek van default public @interface Copyright { String value(); } @Copyright("Tamás Kozsik (2006)") public class Point { … }
11
Tömb típusú elem public @interface Endorsers { String[] value(); } @Endorsers( {"Children", "Unscrupulous dentists"}) public class Lollipop {... } @Endorsers("Children") public class Lollipop {... }
12
Típushelyettesítő public interface Formatter {... } public @interface PrettyPrinter { Class value(); } class GorgeousFormatter implements Formatter {... } @PrettyPrinter(GorgeousFormatter.class) public class Petunia {...} @PrettyPrinter(String.class) // ford. hiba public class Begonia {... }
13
Beágyazott felsorolási típus public @interface Quality { enum Level { BAD, INDIFFERENT, GOOD } Level value(); } @Quality(Quality.Level.GOOD) public class Karma {... }
14
Összetett annotációk public @interface Name { String first(); String last(); } public @interface Author { Name value(); } @Author(@Name(first="Tamás",last="Kozsik")) public class Point { … }
15
Mire alkalmazható Csomagokhoz Típusokhoz (annotáció típusokhoz is) Metódusokhoz Attribútumokhoz (enum konstansokhoz is) Konstruktorokhoz Lokális változókhoz Meta-annotáció
16
Annotáció típusok annotálására Beépített annotáció típusok Saját magát is annotálhatja @Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) public @interface Target { … }
17
Predefinit annotációk A Java nyelvbe/fordítóba beépítettek –Target –Retention –Inherited –Override –SuppressWarnings –Deprecated A szabványos API-ban bevezetettek
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.