Ich habe eine Anmerkung in Java gemacht.

Einführung

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.

Umgebung

Was ist eine Anmerkung in Java?

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.

Arten von Anmerkungen in Java

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

Machen Sie es vertrauter als lernen

Erstellen Sie eine Anmerkungsklasse

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.

Erstellen Sie eine Annotationsklasse und eine aufrufende Klasse

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.

Ich werde versuchen zu rennen

Das Ausführen der oben erstellten Klasse "AnnotationMain.java" führt zu folgenden Ergebnissen:

Ausführungsergebnis
hoge

Es wurde bestätigt, dass der Wert der @ Info-Annotation, die in der Methode "execute ()" von "AnnotationInstance" angegeben ist, erfasst wurde.

schließlich

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.

Referenzierte Site

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

Ich habe eine Anmerkung in Java gemacht.
Ich habe ein Roulette in Java gemacht.
Ich habe eine E-Mail in Java gesendet
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Ich möchte eine E-Mail in Java senden.
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe versucht, Metaprogrammierung mit Java
Ich habe leicht verständlich über Java Downcast geschrieben
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
[Java] Anmerkung
Ich habe einen Interpreter (Compiler?) Mit ungefähr 80 Zeilen in Ruby erstellt.
Ich habe ein PDF mit Java erstellt.
Ich habe eine shopify App @java erstellt
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Lesen Sie CSV in Java (Super CSV Annotation)
[Java] Anmerkung
Versuchen Sie einen If-Ausdruck in Java
Ich habe Gordobachs Theorem in Java geschrieben
Ich habe versucht, JWT in Java zu verwenden
Altersschätzspiel mit Java gemacht
Beispielautomat mit Java
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
Führen Sie einen externen Prozess in Java aus
Ich habe ein "Sunshine Ikezaki-Spiel" gemacht, das ich auf Twitter in Java gesehen habe.
Ich habe einen Öko-Server mit Scala gemacht
Beispiel eines mit Java hergestellten Verkaufsautomaten (Klassifizierung)
Ich habe die OpenCV-Kamerakalibrierung in Java durchgeführt
Ich habe ein neues Java-Bereitstellungstool erstellt
[* Java *] Ich habe am JJUG CCC 2019 Spring teilgenommen
Ich habe StringUtils.isBlank gemacht
Änderungen in Java 11
Janken in Java
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Umfangsrate in Java
FizzBuzz in Java
Überarbeitetes GUI-Tool, das 2016 mit Java8 + JavaFX erstellt wurde
Ich habe selbst eine App gemacht! (Leseverwaltungs-App)
Zweite Abkochung: Versuchen Sie einen If-Ausdruck in Java
Ich habe eine Android-App für den MiRm-Dienst erstellt
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
rsync4j - Ich möchte rsync in Java berühren.
Was ich in Java gelernt habe (Teil 2) Was sind Variablen?
So lösen Sie Ausdrucksprobleme in Java
Ich habe versucht, eine Anwendung in 2 Sprachen zu entwickeln
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Ich habe ein Primfaktorisierungsprogramm in Java geschrieben
Lesen Sie JSON in Java
Machen Sie einen Blackjack mit Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
Ich möchte so etwas wie "cls" in Java machen
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren