Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,

Hasonló előadás


Az előadások a következő témára: "Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,"— Előadás másolata:

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


Letölteni ppt "Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,"

Hasonló előadás


Google Hirdetések