Inhaltsverzeichnis
Was ist Annotation?
Objekte können mit Annotation" >Diese Objekte können mit Annotation
Eingebaute Anmerkung
kann mit Anmerkung
Frameworks
Unit-Testing
Spring
Hibernate
JSR 303 – Bean Validation
Heim Java javaLernprogramm Detaillierte Erläuterung der Java-Annotation-Funktionen

Detaillierte Erläuterung der Java-Annotation-Funktionen

Mar 30, 2017 am 10:51 AM

Was ist Annotation?

Annotation wird ins Chinesische als Annotation übersetzt, was bedeutet, zusätzlich zur Logik des Programms selbst zusätzliche Dateninformationen bereitzustellen. Annotation hat keinen direkten Einfluss auf den annotierten Code. Sie kann nicht direkt mit dem annotierten Code interagieren, aber andere Komponenten können diese Informationen verwenden.

Anmerkungsinformationen können in Klassen-Dateien kompiliert oder in der Java Virtual Machine gespeichert werden, sodass sie zur Laufzeit abgerufen werden können. Annotation kann sogar zu Annotation selbst hinzugefügt werden.

Diese Objekte können mit Annotation

Klassen, Methoden, Variablen, Parametern und Paketen hinzugefügt werden kann Anmerkung hinzugefügt werden.

Eingebaute Anmerkung

@Override ÜberladungDie Methode oder der Typ @Deprecated in der übergeordneten Klasse wird nicht mehr empfohlen

@SuppressWarnings Kompilierung verhindern -Zeitliche Warnmeldungen. Es muss ein Array von String als Parameter empfangen. Die verfügbaren Parameter sind:

  • ungeprüft

  • Pfad

  • seriell

  • endlich

  • Fallthrough

kann mit Anmerkung

@ verwendet werden Retention

bestimmt den

Lebenszyklus der zu speichernden Annotation und muss ein Enum-Objekt RetentionPolicy als Parameter erhalten.

public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}
Nach dem Login kopieren

@Documented Documented

@Target

gibt den Bereich an, den die Annotation ändern kann, und erhält eine Enum Array von Objekten EnumType als Parameter.

public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,

    /** Field declaration (includes enum constants) */
    FIELD,

    /** Method declaration */
    METHOD,

    /** Parameter declaration */
    PARAMETER,

    /** Constructor declaration */
    CONSTRUCTOR,

    /** Local variable declaration */
    LOCAL_VARIABLE,

    /** Annotation type declaration */
    ANNOTATION_TYPE,

    /** Package declaration */
    PACKAGE
}
Nach dem Login kopieren

@Inherited

Diese Annotation kann sich auf Unterklassen der annotierten Klasse auswirken.

Benutzerdefinierte Annotation

Wir können Annotation nach JSE5.0 anpassen. Hier ist ein einfaches Beispiel.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MethodAnnotation {

}
Nach dem Login kopieren
Das folgende Person-Objekt verwendet eine benutzerdefinierte MethodAnnotation.

public class Person {

    public void eat() {
        System.out.println("eating");
    }

    @MethodAnnotation
    public void walk() {
        System.out.print("walking");
    }

}
Nach dem Login kopieren
Wir können Anmerkungsinformationen durch Reflexion erhalten.

 Class<Person> personClass = Person.class;
        Method[] methods = personClass.getMethods();
        for(Method method : methods){
            if (method.isAnnotationPresent(MethodAnnotation.class)){
                method.invoke(personClass.newInstance());
            }
        }
Nach dem Login kopieren
Ausgabe:

walking
Nach dem Login kopieren
Wir können benutzerdefinierten Annotationen auch Methoden hinzufügen.

@Target(ElementType.TYPE)
public @interface personAnnotation {
    int id() default 1;
    String name() default "bowen";
}
Nach dem Login kopieren
Das Folgende ist die Verwendung von personAnnotation.

@personAnnotation(id = 8, name = "john")
public class Person {

    public void eat() {
        System.out.println("eating");
    }

    @MethodAnnotation
    public void walk() {
        System.out.print("walking");
    }

}
Nach dem Login kopieren
Wie Annotationen verarbeitet werden

Wenn der Java-Quellcode kompiliert wird, verarbeitet ein Plug-in-Annotationsprozessor des Compilers diese Annotationen. Der Prozessor kann Berichtsinformationen generieren oder zusätzliche Java-Quelldateien oder -Ressourcen erstellen. Wenn die Annotation selbst zur RenttentionPolicy-Laufzeitklasse hinzugefügt wird, speichert der Java-Compiler die Metadaten der Annotation in der Klassendatei. Anschließend können die Java Virtual Machine oder andere Programme diese Metadaten nachschlagen und entsprechend verarbeiten.

Zusätzlich zum Annotationsprozessor, der Annotationen verarbeiten kann, können wir natürlich auch Reflektion verwenden, um Annotationen selbst zu verarbeiten. Java SE 5 verfügt über eine

Schnittstelle mit dem Namen AnnotatedElement. Die reflektierenden Objektklassen Class, Constructor, Field, Method und Package implementieren alle diese Schnittstelle. Diese Schnittstelle wird verwendet, um die kommentierten Programmelemente darzustellen, die derzeit in der Java Virtual Machine ausgeführt werden. Über diese Schnittstelle können Sie Reflektion zum Lesen von Anmerkungen verwenden. Die AnnotatedElement-Schnittstelle kann auf mit RUNTIME markierte Annotationen zugreifen. Die entsprechenden Methoden sind getAnnotation, getAnnotations und isAnnotationPresent. Da Annotationstypen wie Klassen in Binärdateien kompiliert und gespeichert werden, können die von diesen Methoden zurückgegebenen Annotations wie gewöhnliche Java-Objekte abgefragt werden. Umfangreiche Verwendung von Annotation

Annotation wird häufig in verschiedenen

Frameworks

und Bibliotheken verwendet.

Junit

Junit ist ein sehr bekanntes

Unit-Testing

-Framework. Wenn Sie Junit verwenden, müssen Sie mit vielen Anmerkungen konfrontiert werden.

@Runwith benutzerdefinierte Testklasse Runner
  • @ContextConfiguration Set Spring's ApplicationContext
  • @DirtiesContext Reload den ApplicationContext, bevor der nächste Test ausgeführt wird.
  • @Vor der Initialisierung vor dem Aufruf der Testmethode
  • @Nach der Verarbeitung nach dem Aufruf der Testmethode
  • @Test gibt an, dass die Methode eine Testmethode ist
  • @Ignore kann zur Testklasse oder Testmethode hinzugefügt werden, um den Vorgang zu ignorieren.
  • @BeforeClass: Wird aufgerufen, bevor alle Testmethoden in der Testklasse ausgeführt werden, und nur einmal aufgerufen (die markierte Methode muss
  • statisch
  • sein)

  • @AfterClass: Wird aufgerufen, nachdem alle Testmethoden in der Testklasse ausgeführt wurden, und nur einmal ausgeführt (die markierte Methode muss statisch sein)

Spring

Der Frühling ist als Konfigurationshölle bekannt und es gibt viele Anmerkungen.

  • @Service kommentiert die Serviceklasse

  • @Repository kommentiert die DAO-Klasse

  • @Component Kommentieren Sie die Komponentenklasse

  • @Autowired Lass Spring Bohnen automatisch zusammenbauen

  • @Transactional Dinge konfigurieren

  • @Scope konfiguriert den Überlebensbereich des Objekts

  • @Controller kommentiert die Controller-Klasse

  • @RequestMapping URL-Pfadzuordnung

  • @PathVariable ordnet Methodenparameter Pfaden zu

  • @RequestParam bindet Anforderungsparameter an Methodenvariablen

  • @ModelAttribute ist an die gebunden model

  • @SessionAttributes wird auf das Sitzungsattribut gesetzt

Hibernate

  • @Entity ändert das Entity Bean

  • @Table ordnet die Entity-Klasse der Tabelle in der Datenbank zu

  • @Column ordnet die Spalte zu

  • @Id-Zuordnungs-ID

  • @GeneratedValue Dieses Feld erhöht sich selbst

  • @Version Versionskontrolle oder Parallelitätskontrolle

  • @OrderBy Collation

  • @Lob Large Object Annotation

Hibernate und vieles mehr In Bezug auf die Anmerkungen der Vereinigung und der Anmerkungen zum Erben , ist es sinnlos, sie hier aufzulisten.

JSR 303 – Bean Validation

JSR 303 – Bean Validation ist eine Datenvalidierungsspezifikation, und ihre Überprüfung von Java Beans wird hauptsächlich durch Java-Annotation implementiert.

  • @NullAnnotated by Das Element von muss null sein

  • @NotNull annotated The Element darf nicht null sein

  • @AssertTrueDas mit Anmerkungen versehene Element muss wahr sein@AssertFalseDas mit Anmerkungen versehene Element muss falsch sein@Min(Wert)Das mit Anmerkungen versehene Element muss eine Zahl sein, deren Wert größer sein muss als oder gleich dem angegebenen Mindestwert

  • @Max(value) Das mit Anmerkungen versehene Element muss eine Zahl sein und sein Wert muss kleiner oder gleich dem angegebenen Maximalwert

  • @DecimalMin(value)Das mit Anmerkungen versehene Element muss eine Zahl sein und sein Wert muss größer oder gleich dem angegebenen Mindestwert sein

  • @DecimalMax( value)Das mit Anmerkungen versehene Element muss eine Zahl sein, deren Wert kleiner oder gleich dem angegebenen Maximalwert sein muss

  • @Size(max, min) Die Größe des mit Anmerkungen versehenen Elements muss sein innerhalb des angegebenen Bereichs

  • @Digits (Ganzzahl, Bruch) Das mit Anmerkungen versehene Element muss eine Zahl sein und sein Wert muss innerhalb eines akzeptablen Bereichs liegen

  • @Past Das annotierte Element muss ein Datum in der Vergangenheit sein

  • Das mit @Future annotierte Element muss ein Datum in der Zukunft sein

  • Das mit @Pattern(value) annotierte Element muss dem angegebenen

    regulären Ausdruck entsprechen

Tatsächlich gibt es viele Frameworks oder Bibliotheken, die Annotationen verwenden Ich werde sie hier nicht einzeln auflisten. Ich hoffe, dass jeder mehr über Annotationen in Java erfahren kann.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Java-Annotation-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

See all articles