So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert

Ich werde ein Beispielprogramm vorstellen, das eine selbst erstellte Annotation in Java erstellt und den Wert der Annotation erfasst.

Umgebung

C:\>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

C:\>

1. Erstellen Sie Ihre eigene Anmerkung

Dies ist ein Beispiel für selbst erstellte Anmerkungen. Hier haben die Mitglieder "Name" und "Wert".

MyAnnotation.java


package test01;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)     // (1) @Steuern Sie, wie viele Anmerkungsinformationen in Retantion gespeichert werden
@Target({                               // (2) @Ziel Steuert, welcher Elementtyp mit Anmerkungen versehen werden kann
    ElementType.TYPE,
    ElementType.FIELD,
    ElementType.CONSTRUCTOR,
    ElementType.METHOD
})
public @interface MyAnnotation {        // (3)Erstellen Sie MyAnnotation
    String name();
    int value() default 0;
}

Geben Sie an, bis zu welchem Zeitpunkt die Anmerkungsinformationen von "@ Retention" in (1) beibehalten werden.

Das Folgende kann hauptsächlich für "@ Retention" eingestellt werden.

Wert Erläuterung
RetentionPolicy.SOURCE Anmerkungen werden nur auf Quellenebene beibehalten und vom Compiler ignoriert.
RetentionPolicy.CLASS Anmerkungen werden vom Compiler zur Kompilierungszeit beibehalten, von der Java Virtual Machine (JVM) jedoch ignoriert.
RetentionPolicy.RUNTIME Anmerkungen werden von der JVM beibehalten und können in einer Laufzeitumgebung verwendet werden.

Geben Sie hier "RetentionPolicy.RUNTIME" an.

Geben Sie in (2) den Ort an, an dem die Anmerkung mit "@ Target" angewendet werden kann.

Das Folgende kann hauptsächlich für "@ Target" eingestellt werden.

Wert Erläuterung
ElementType.TYPE Machen Sie es anwendbar auf Klassen, Schnittstellen, Anmerkungen und Aufzählungstypen.
ElementType.FIELD Machen Sie es auf das Feld anwendbar.
ElementType.CONSTRUCTOR Machen Sie es auf den Konstruktor anwendbar.
ElementType.METHOD Machen Sie es auf die Methode anwendbar.

Geben Sie hier "ElementType.TYPE", "ElementType.FIELD", "ElementType.CONSTRUCTOR" und "ElementType.METHOD" in "@ Target" an.

Erstellen Sie in (3) eine Anmerkung mit dem Namen "MyAnnotation". Setzen Sie die Mitglieder auf "Name" und "Wert".

2. Kommentieren Sie die Klasse

Fügen Sie den Klassen, Feldern, Konstruktoren und Methoden der Klasse "Sample" Ihre eigene "MyAnnotation" hinzu.

Sample.java


package test01;

@MyAnnotation(name="class", value=100)              // (1)Gewähren Sie der Klasse MyAnnotation
public class Sample {

    @MyAnnotation(name="field", value=200)          // (2)Gewähren Sie dem Feld MyAnnotation
    private String name;

    @MyAnnotation(name="constructor", value=300)    // (3)Fügen Sie MyAnnotation zum Konstruktor hinzu
    public Sample() {}

    @MyAnnotation(name="method", value=400)         // (4)Gewähren Sie der Methode MyAnnotation
    public void execute() {
        System.out.println("execute");
    }
}

(1) Fügen Sie der Klasse Ihre eigene Anmerkung (MyAnnotation) hinzu. (2) Fügen Sie dem Feld Ihre eigene Anmerkung ("MyAnnotation") hinzu. (3) Fügen Sie dem Konstruktor Ihre eigene Annotation (MyAnnotation) hinzu. (4) Fügen Sie der Methode Ihre eigene Anmerkung (MyAnnotation) hinzu.

3. Holen Sie sich die Anmerkung und beziehen Sie sich darauf

Main.java


package test01;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Main {

    public static void main(String[] args)
            throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException, SecurityException {

        // (1)Holen Sie sich die Annotation (MyAnnotation), die an die Klasse angehängt ist
        Class<?> clazz = Class.forName("test01.Sample");
        MyAnnotation annoClass = (MyAnnotation) clazz.getAnnotation(MyAnnotation.class);
        System.out.println("class annotation : name=" + annoClass.name() + ", value=" + annoClass.value());

        // (2)Holen Sie sich die Annotation (MyAnnotation) an das Feld angehängt
        Field field = clazz.getDeclaredField("name");
        MyAnnotation annoField = (MyAnnotation) field.getAnnotation(MyAnnotation.class);
        System.out.println("field annotation : name=" + annoField.name() + ", value=" + annoField.value());

        // (3)Holen Sie sich die Annotation (MyAnnotation) an den Konstruktor
        Constructor<?> cons = clazz.getConstructor();
        MyAnnotation annoCons = (MyAnnotation) cons.getAnnotation(MyAnnotation.class);
        System.out.println("constructor annotation : name=" + annoCons.name() + ", value=" + annoCons.value());

        // (4)Holen Sie sich die Annotation (MyAnnotation) an die Methode angehängt
        Method method = clazz.getMethod("execute");
        MyAnnotation annoMethod = (MyAnnotation) method.getAnnotation(MyAnnotation.class);
        System.out.println("method annotation : name=" + annoMethod.name() + ", value=" + annoMethod.value());

    }
}

(1) Erfasst den Inhalt der Anmerkung ("MyAnnotation"), die der Klasse "Sample" beigefügt ist, und zeigt sie an. (2) Erfasst den Inhalt der Anmerkung ("MyAnnotation"), die an den Feldnamen "der Klasse" Sample "angehängt ist, und zeigt ihn an. (3) Erfasst den Inhalt der Annotation ("MyAnnotation"), die an den Konstruktor der "Sample" -Klasse angehängt ist, und zeigt sie an. (4) Erfasst den Inhalt der Annotation ("MyAnnotation"), die an die "execute" -Methode der "Sample" -Klasse angehängt ist, und zeigt sie an.

Referenz

Lesson: Annotations (The Java™ Tutorials < Learning the Java Language)


das ist alles

Recommended Posts

So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
So erhalten Sie das Datum mit Java
[Java] So erhalten Sie den Schlüssel und den Wert, die in Map gespeichert sind, durch iterative Verarbeitung
[Java] So erhalten Sie den Maximalwert von HashMap
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
[Forge] So registrieren Sie Ihre eigene Entität und Ihr Entity Render in 1.13.2
[Java] So erhalten Sie das aktuelle Verzeichnis
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So erhöhen Sie den Wert von Map in einer Zeile in Java
So erhalten Sie eine Klasse von Element in Java
Wie man Java SE8 Gold bekommt und studiert
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
[Java] So erhalten Sie die endgültige umgeleitete URL
Ich möchte den Wert in Ruby erhalten
Erstellen Sie mit Xcode Ihre eigenen Verknüpfungen, um komplizierte Pod-Installationsarbeiten zu vermeiden
Gedanke: Wie man eine funktionale Schnittstelle für eigene Funktionen verwendet (Java)
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
Quelle zum Abrufen der Umleitungsquell-URL in Java
So erstellen Sie einen Daten-URI (base64) in Java
In der Abbildung verstandene Java-Klassen und -Instanzen
Erstellen Sie Ihre eigenen Java-Anmerkungen
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Bedingte Java-Verzweigung: Erstellen und Studieren von switch-Anweisungen
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
So rufen Sie den Hashwert in einem Array in Ruby ab
Aufrufen und Verwenden der API in Java (Spring Boot)
Erstellen Sie mit Java Ihren eigenen einfachen Server und verstehen Sie HTTP
So entwickeln und registrieren Sie eine Sota-App in Java
So leiten Sie den letzten Tag des Monats in Java ab
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
So wechseln Sie Java in der OpenJDK-Ära auf dem Mac
Verwendung von HttpClient (Get) von Java
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark
So schreiben Sie Kommentare in die Schemadefinitionsdatei in GraphQL Java und spiegeln sie in GraphiQL und GraphQL Playground wider
Behandeln Sie Ihre eigenen Anmerkungen in Java
Filtern Sie die optionale Java No. 2-Liste, die im Geschäftsleben nützlich war, und erhalten Sie den ersten Wert
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
Wie verwende ich Klassen in Java?
So verketten Sie Zeichenfolgen mit Java
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
Abrufen und Hinzufügen von Daten aus dem Firebase Firestore in Ruby
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
So bringen Sie JDK 11 bequem in den Mac