Wenn es keine Methoden und Aufgaben zum Lesen von Anmerkungen gibt, sind Anmerkungen nicht nützlicher als Anmerkungen. Ein wichtiger Bestandteil der Verwendung von Annotationen wird unter Verwendung eines Annotationsprozessors erstellt. Javase5 erweitert die Reflexionsmechanismus -API, um Programmierern schnell benutzerdefinierte Annotationsprozessoren zu erstellen.
Annotierte Prozessorklassenbibliothek (java.lang.reflect.annotatedElement):
Java verwendet die Annotationsschnittstelle, um die Annotation vor dem Programmelement darzustellen, nämlich die übergeordnete Schnittstelle aller Annotationstypen. Darüber hinaus hat Java eine kommentierte Schnittstelle unter dem Paket java.lang.reflect hinzugefügt. Diese Schnittstelle repräsentiert Programmelemente, die Anmerkungen im Programm akzeptieren können. Die Schnittstelle hat hauptsächlich die folgenden Implementierungsklassen:
Klasse: Klassendefinition
Konstruktor: Konstruktordefinition
Feld: Kumulative Mitgliedsvariablendefinition
Methode: Methode Definition der Klasse
Paket: Paketdefinition der Klasse
Das Java.lang.Reflect -Paket enthält hauptsächlich einige Werkzeugklassen, die Reflexionsfunktionen implementieren. Tatsächlich erweitern alle Reflexions -APIs, die vom Paket von Java.lang.Reflect bereitgestellt werden, die Möglichkeit, Laufzeitanmerkungen zu lesen. Wenn ein Annotationstyp zur Laufzeit als Annotation definiert wird, kann die Annotation nur zur Laufzeit sichtbar sein und die in der Klassendatei gespeicherte Annotation, wenn die Klassendatei geladen wird, wird von der virtuellen Maschine gelesen.
Die kommentierte Schnittstelle ist die übergeordnete Schnittstelle aller Programmelemente (Klasse, Methode und Konstruktor). Nachdem das Programm das kommentierte Objekt einer bestimmten Klasse durch Reflexion erhalten hat, kann das Programm die folgenden vier Methoden des Objekts aufrufen, um auf die Annotationsinformationen zuzugreifen:
Methode 1: <textendAnnotation> TGetAnnotation (Klasse <T> AnnotationClass): Gibt eine Annotation des angegebenen Typs zurück, der im Programmelement vorliegt. Wenn die Annotation des Typs nicht vorhanden ist, geben Sie NULL zurück.
Methode 2: Annotation [] getAnnotations (): Gibt alle Anmerkungen zurück, die im Programmelement vorhanden sind.
Methode 3: BooleanisannotationPresent (Klasse <? ExtendSannotation> AnnotationClass): Bestimmt, ob das Programmelement Anmerkungen des angegebenen Typs enthält. Wenn es existiert, wird es wahr zurückgegeben, andernfalls wird es falsch zurückgegeben.
Methode 4: Annotation [] getDeclaredAnnotations (): Gibt alle Kommentare zurück, die direkt zu diesem Element existieren. Im Gegensatz zu anderen Methoden in dieser Schnittstelle ignoriert diese Methode vererbte Annotationen. (Wenn kein Kommentar direkt zu diesem Element vorliegt, wird ein Array mit Länge Null zurückgegeben.) Der Anrufer der Methode kann das zurückgegebene Array nach Belieben ändern. Dies hat keinen Einfluss auf das von andere Anrufer zurückgegebene Array.
Ein einfacher Annotationsprozessor:
/********************* Annotation declaration*******************//** * Fruit name annotation* @author peida * */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface FruitName {String value() default "";}/** * Fruit color annotation* @author peida * */ @Target (elementtype.field) @retention (retentionPolicy.runtime) @DocumentedPublic @Interface fruitColor {/** * Farbe enum * @author peida * */public enum color {bule, rot, grün; @author peida**/ @target (elementtype.field) @retention (retentionPolicy.runtime) @DocumentedPublic @Interface fruitProvider {/*** Lieferantennummer* @return*/public int id () Default -1;/*** -Träger* @return*/public String name () Default "; "";}/**************** Die Annotation verwendet *******************. 89, Yan'an Road, Xi'an City, Shaanxi Provinz ") private String AppleProvider; public void setAPlecolor (String AppleColor) {this.aplePlecolor = AppleColor;} public String getAppleColor () {return AppleColor; getApplename () {return appename;} public void setAppleProvider (String AppleProvider) {this.appleProvider = AppleProvider;} public String getAppleProvider () {return AppleProvider;} public void displayName () {system.println ("The Name of the Fruit is::: Prozessor********** : fields) {if (field.isannotationPresent (fruitname.class)) {fruitname fruitname = (fruitname) field.getannotation (fruitname.class); struitname = struitname+fruitname.value (); if (field.isAnnotationPresent (fruitcolor.class)) {fruitcolor fruitcolor = (fruitcolor) field.getannotation (fruitcolor.class); struitcolor = struitcolor+fruitcolor.fruitcolor (). tostring (); if (field.isannotationPresent (fruitProvider.class)) {fruitProvider fruitProvider = (fruitProvider) field. "+fruitProvider.address (); {FruitInfoUtil.getFruitInfo(Apple.class);}}======================================================= Fruit name: Apple Fruit color: RED Supplier number: 1 Supplier name: Shaanxi Hongfuji Group Supplier address: Hongfuji -Gebäude, Nr. 89, Yan'an Road, Stadt Xi'an, Provinz ShaanxiIch habe im Grunde die Grundkenntnisse von Java -Annotationen gelesen (siehe Karte unten). Im nächsten Artikel entwerfen wir ein einfaches ORM -Framework, das auf Anmerkungen basiert, um das Verständnis und die Anwendung verschiedener Wissenspunkte von Anmerkungen umfassend anzuwenden und weiter zu vertiefen.
Zusammenfassen
In diesem Artikel geht es um die einfachen Beispiele für Java -Annotationsprozessor. Ich hoffe, dass es für alle hilfreich sein wird. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!