Ich arbeitete und stellte fest, dass ich Anmerkungen nicht verstand. Ich verstehe, dass @Override, @Duplicate, @Test angegeben sind, aber ich weiß nicht, wie es funktioniert, also habe ich es nachgeschlagen.
Das Folgende ist aus Wikipedia.
Java-Annotationen sind eine Funktion zur Eingabe zusätzlicher Informationen als Metadaten für Klassen, Methoden und Pakete und wurden in Java SE 5 hinzugefügt. Sie können auch eigene Anmerkungen erstellen, indem Sie die Schnittstelle java.lang.annotation.Annotation implementieren.
Die Arten von Anmerkungen werden in die folgenden drei Arten eingeteilt.
--Marker Annotation - Eine Annotation ohne Daten und nur mit einem Namen. Beispiel: @Override, @Duplicate
Info.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Info {
String value();
}
Fügen Sie die folgenden Anmerkungen hinzu, um die Anmerkungsklasse zu definieren.
CLASS
: Wird zur Kompilierungszeit in der Klassendatei aufgezeichnet. Zur Laufzeit nicht in VM geladen.
RUNTIME
: Wird zur Laufzeit in die VM geladen
SOURCE
: Zum Zeitpunkt der Kompilierung verwerfen
ANNOTATION_TYPE
: Gilt für Anmerkungen
CONSTRUCTOR
: Gilt für Konstrukteure
FELD
: Gilt für Felder
LOCAL_VARIABLE
: Lokal anwendbar
METHODE
: Anwendbar auf Methoden
PAKET
: Gilt für Pakete
PARAMETER
: Gilt für Argumente
Dieses Mal möchte ich einen Prozess erstellen, um den Wert der Annotation beim Ausführen der Methode abzurufen.
Geben Sie @Retention als RUNTIME
und @Target als METHOD
an.
Es wird die Klasse sein, die angerufen werden muss. Fügen Sie der Methode die erstellte Info-Annotation hinzu.
AnnotationInstance.java
public class AnnotationInstance {
@Info("hoge")
public void execute() {
System.out.println("Hello World!!");
}
}
@Info("hoge")
Der Wert wird in der Annotation @Info festgelegt.
hoge ist auf Wert eingestellt.
Es wird die aufrufende Hauptklasse sein.
AnnotationMain.java
import java.lang.reflect.Method;
public class AnnotationMain {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("AnnotationInstance");
Method method1 = clazz.getMethod("execute", new Class<?>[] {});
Info info1 = method1.getAnnotation(Info.class);
System.out.println(info1.value());
} catch (ClassNotFoundException | NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
}
}
Holen Sie sich die Methode durch Reflektion und dann die Annotation-Klasse.
Das Ausführen der oben erstellten Klasse "AnnotationMain.java" führt zu folgenden Ergebnissen:
hoge
Es wurde bestätigt, dass der Wert der @ Info-Annotation, die in der Methode "execute ()" von "AnnotationInstance" angegeben ist, erfasst wurde.
Es war überraschend einfach zu bedienen. Während des Schreibens dieses Artikels habe ich einige Implementierungen von Anmerkungsklassen erneut besucht. Ich fasse es normalerweise nicht an, aber es wird wahrscheinlich verwendet, weil es ein Framework und eine Paketentwicklung ist. Ich konnte es bis jetzt nicht lesen, also werde ich es lesen, ohne mich in Zukunft schwach zu fühlen. Ich habe auch das Spiegelbild zum ersten Mal seit einer Weile berührt. Ich verstehe auch nicht so viel, also werde ich genauer hinsehen.
Anmerkungen-Wikipedia https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3#Java%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3 Eine kleine spezielle Java Annotation-Qiita https://qiita.com/kashira2339/items/6450714e42c37b441514 Beispiel, um eine eigene Anmerkung zu erstellen und den Wert | ITSakura zu erhalten https://itsakura.com/java-annotation-make
Recommended Posts