Musí obsahovat element-value pár pro každý element z použité anotace (defaultních ne)
Může být na libovolném místě mezi modifikátory (konvence: na prvním místě)
Použití – vlastnosti – 2
Může být použita jako modifikátor pro:
Package
Class
Interface
Člensku proměnnou
Metodu
Paramater metody
Konstruktor
Lokální proměnnou
Použití – vlastnosti – 3
Hodnota nesmí být null
Pokud je element pole a hodnota není ElementValueArrayInitializer, tak se použije jako jediný prvek pole
Použití – příklad – 2 @ Author ( @ Name ( first = "Joe" , last = "Hacker" )) public class BitTwiddle { ... } @ Quality ( Quality . Level . GOOD ) public class Karma { ... } @ Copyright ( "2002 Yoyodyne Systems, Inc., All rights reserved." ) public class OscillationOverthruster { ... }
Použití – příklad – 3 @ RequestForEnhancement ( id = 2868724 , synopsis = "Provide time-travel functionality" // , // engineer = "Mr. Peabody" , // date = "4/1/2004" ) public void travelThroughTime ( Date destination ) {
Předdefinované anotace
Závislé na příslušném API
Některé vyžadují speciální sémantiku
Anotace, které potřebují speciální chování:
Target
Retentition
Inherited
Override
SuppressWarnings
Target – 1
Specifikuje, k jakému typu elementu může být anotace připojena
Přípustné hodnoty:
ANNOTATION_TYPE - deklarace anotace
CONSTRUCTOR - deklarace konstruktoru
FIELD - deklarace člena třídy
LOCAL_VARIABLE - deklarace lokální proměnné
PACKAGE - deklarace balíku
METHOD - deklarace metody
Target – 2
Přípustné hodnoty:
PARAMETER - deklarace parametru metody
TYPE - deklarace typu (třída, rozhraní, anotace, výčtový typ)
@ Target ( ElementType . TYPE ) public @ interface Foo { }
Retentition
Specifikuje, kde a jak dlouho bude anotace dostupná
0 comments
Post a comment