1. Übersicht
Anmerkungen können auf Methoden definiert werden.
Häufig verwendete Anmerkungen:
@Override: bedeutet eine Methode zur Wiedererteilung der Klasse,
Dies kann auch bestimmen, ob die übergeordnete Klassenmethode vor der Methode überschrieben wird. Methode der übergeordneten Elternklasse.
@Suppresswarnings ("Abschaltung"): Die Compiler -Warnung stornieren (z. B. ist die Methode, die Sie verwenden, veraltet)
@Deprecated: Diese Aussage befindet sich auch oben in der Methode, was darauf hinweist, dass diese Methode veraltet oder in der Klasse verwendet wird
Die Codekopie lautet wie folgt:
Import Java.util.ArrayList;
importieren java.util.list;
öffentliche Klasse AnnotationDemo {
/*
* Für Sammlungen wird es eine Sicherheitswarnung geben, wenn kein Speichertyp angegeben ist.
* Wenn Sie keine Sicherheitswarnung fordern möchten, fügen Sie @SuppressWarnings (Parameter) zur Klasse oder Methode hinzu.
*/
@Suppresswarnings ("Unbekämpft")
public static void main (String [] args) {
Listlist = new ArrayList ();
}
}
2. benutzerdefinierte Anmerkungen
1. Format
Berechtigungen @Interface Annotationsname {}
Schritt:
Definieren Sie Annotationsklassen ---> Definieren Sie die Klasse der Annotationsklasse der Anwendung ---> Klasse, die die Klasse der Anwendungsannotationsklasse widerspiegelt (diese Klasse kann separat definiert oder in der Anwendungsannotationsklasse getestet werden)
Die Codekopie lautet wie folgt:
importieren java.lang.annotation.retention;
Importjava.lang.Annotation.RetentionPolicy;
// Definieren Sie diese Annotation, die im Bytecode aufbewahrt werden soll
@Retention (RetentionPolicy.Runtime)
public @Interface Myannotation {
}
@Myannotation
// anwendungsdefinierte Annotationsklasse
öffentliche Klasse ApplyMyannotation {
public static void main (String [] args) {
if (applyMyannotation.class.isannotationPresent (myannotation.class)) {// Bestimmen Sie, ob eine angegebene Annotationsklasse in dieser Klasse vorhanden ist
Myannotation Annotation = (Myannotation) applyMyannotation.class
.Getannotation (myannotation.class);
System.out.println (Annotation);
}
}
}
2. Deklarationszyklus
Format: Zum Beispiel: @Retention (RetentionPolicy.class)
Definieren Sie die Zyklen in einer benutzerdefinierten Annotationsklasse, @Retention (Parameter Typ) Parametertyp ist RetentionPolicy
RetentionPolicy.class: Auf der Klassendatei behält die virtuelle Maschine die Anmerkungen während der Laufzeit nicht bei
RetentionPolicy.Runtime: In der Klassendatei werden die virtuellen Kommentare während der Laufzeit aufbewahrt.
RetentionPolicy.Source: Auf der Quelldatei verwerfen Sie die Annotation
Unterdrückung und Überschreibung sind RetentionPolicy.Source,
Veraltet ist in RetentionPolicy.Runtime.
Der Standard ist die RetentionPolicy.Class:
3. Geben Sie das Ziel an
Format: Zum Beispiel: methode @target (elementtype.method)
Welche Mitglieder können durch die definierte Annotation kommentiert werden. Wenn diese Annotation nicht deklariert wird, kann sie auf ein Programmelement aufgenommen werden.
Es können Pakete, Schnittstellen, Parameter, Methoden, lokale Variablen, Felder usw. sein.
Die Codekopie lautet wie folgt:
// Definieren Sie diese Annotation, die im Bytecode aufbewahrt werden soll
@Retention (RetentionPolicy.Runtime)
@Target ({Elementtype.method, elementtype.type}) // Es kann auf Methoden und Klassen definiert werden, um Typen darzustellen
public @Interface Myannotation {
}
@Myannotation
// anwendungsdefinierte Annotationsklasse
öffentliche Klasse ApplyMyannotation {
@Myannotation // definiert auf der Methode
public static void main (String [] args) {
if (applyMyannotation.class.isannotationPresent (myannotation.class)) {// Bestimmen Sie, ob eine angegebene Annotationsklasse in dieser Klasse vorhanden ist
Myannotation Annotation = (Myannotation) applyMyannotation.class
.Getannotation (myannotation.class);
System.out.println (Annotation);
}
}
}
3. Fügen Sie der Annotation Attribute hinzu
1. Typ
Die Attributeinstellungen von Anmerkungen können: 8 grundlegende Datentypen, String, Aufzählung, Annotation, Klasse, Array -Typen,
2. Achten Sie darauf
Wenn in der Annotation nur ein Attribut vorhanden ist oder nur ein Attribut zugewiesen werden muss, kann es direkt geschrieben werden, wenn es aufgerufen wird, ohne den Attributnamen anzugeben.
Wenn das kommentierte Attribut ein Array -Typ ist und bei Zuweisung nur ein Wert zugewiesen wird, kann {} weggelassen werden.
3. Beispiel
3.1.Attribute Type (ist String)
Die Codekopie lautet wie folgt:
Import Java.lang.Annotation.Elementtype;
importieren java.lang.annotation.retention;
Import Java.lang.annotation.RetentionPolicy;
import Java.lang.annotation.*;
// Definieren Sie diese Annotation, die im Bytecode aufbewahrt werden soll
@Retention (RetentionPolicy.Runtime)
public @Interface Myannotation {
String value ();
String color () Standard "rot"; // Setzen Sie den Standardwert "rot".
}
@Myannotation ("Java")
öffentliche Klasse ApplyMyannotation {
public static void main (String [] args) {
/**
* Dies soll die Annotation in der Klasse erhalten, und Sie können auch die Annotation für die Methode erhalten.
*/
if (applyMyannotation.class.isannotationPresent (myannotation.class)) {// Bestimmen Sie, ob eine angegebene Annotationsklasse in dieser Klasse vorhanden ist
Myannotation Annotation = (Myannotation) applyMyannotation.class
.Getannotation (myannotation.class);
System.out.println ("value ="+Annotation.Value ());
System.out.println ("Color ="+Annotation.color ());
}
}
}
Ergebnis:
Wert = Java
Farbe = rot
Aus dem Anrufprogramm kann auch ersichtlich sein, dass der Attributname ausgelassen werden kann, wenn nur ein Attribut zugewiesen werden kann. Andernfalls @ Annotation Class (Attributname = Wert)
3.2
Die Codekopie lautet wie folgt:
/*Enum Class*/
Öffentliche Enum Woche {
Sonne, Mon;
}
/**
* Annotationsklasse
*/
public @Interface AnnotationText {
String value ();
}
Import Java.lang.Annotation.Elementtype;
importieren java.lang.annotation.retention;
Import Java.lang.annotation.RetentionPolicy;
import Java.lang.annotation.*;
// Definieren Sie diese Annotation, die im Bytecode aufbewahrt werden soll
@Retention (RetentionPolicy.Runtime)
public @Interface Myannotation {
String value ();
String color () Standard "rot"; // Setzen Sie den Standardwert "rot".
Woche Woche () Standardwoche.mon; // Enum Type
int [] array () Standard {1,2,3}; // Array -Typ
AnnotationText Annotation () Standard @AnnotationText ("My");
Klasse classDemo () Standard Integer.class; // Klassentyp
}
@Myannotation (value = "java", color = "green", week = week.sun, array = 5, Annotation =@AnnotationText ("You"), classDemo = string.class) // array = {4,5, 6}
öffentliche Klasse ApplyMyannotation {
public static void main (String [] args) {
/**
* Dies soll die Annotation in der Klasse erhalten, und Sie können auch die Annotation für die Methode erhalten.
*/
if (applyMyannotation.class.isannotationPresent (myannotation.class)) {// Bestimmen Sie, ob eine angegebene Annotationsklasse in dieser Klasse vorhanden ist
Myannotation Annotation = (Myannotation) applyMyannotation.class
.Getannotation (myannotation.class);
System.out.println ("value ="+Annotation.Value ());
System.out.println ("Color ="+Annotation.color ());
System.out.println ("week ="+Annotation.week ());
System.out.println ("Array Länge ="+Annotation.Array (). Länge);
System.out.println ("Annotation Typ Value ="+Annotation.Annotation (). Value ());
System.out.println ("Klassentyp value ="+Annotation.ClassDemo ());
}
}
}
Ergebnis:
Die Codekopie lautet wie folgt:
Wert = Java
Farbe = grün
Woche = Sonne
Arraylänge = 1
Annotationstyp Wert = Sie
Klassentyp Wert = classjava.lang.String
4. Anmerkungen zur Methode
Die Codekopie lautet wie folgt:
Importjava.lang.Annotation.Retention;
Importjava.lang.Annotation.RetentionPolicy;
/**
*Annotationsklasse
*/
@Retention (RetentionPolicy.Runtime)
public @Interface AnnotationText {
StringValue ();
}
publicClassApplymyannotation {
publicStaticVoidmain (String [] args) ThrowSexception {
MethodMethodshow = applyMyannotation.class.getMethod ("show");
AnnotationTextanno = methodeShow.getAnnotation (AnnotationText.class);
System.out.println (Anno.Value ());
}
@AnnotationText ("Java")
publicVoidshow () {
System.out.println ("Hallo");
}
}
Ergebnisse: Java