Heim > Java > javaLernprogramm > Hauptteil

Ein Artikel, der Ihnen hilft, Annotationen in Java zu verstehen

无忌哥哥
Freigeben: 2018-07-23 10:45:14
Original
2149 Leute haben es durchsucht

Annotationen sind etwas, mit dem jeder Java-Entwickler vertraut sein wird, aber wir verwenden so viele Annotationen, wie funktionieren unsere Annotationen für uns? Durch mein Studium vor einiger Zeit habe ich ein neues Verständnis von Annotationen erlangt.

1. Was sind Annotationen?

Nach unserer allgemeinen Ansicht ist eine Annotation eine Implementierung der Annotation-Schnittstelle. Sie befindet sich auf derselben Deklarations- und Verwendungsebene wie Klassen und Schnittstellen Objektbasisklasse und verfügen über das .class-Attribut.

Aber funktionieren die Anmerkungen selbst wirklich?

Wenn Sie es nicht glauben, versuchen Sie, selbst eine Anmerkung zu definieren und sie dann in Ihren Code einzufügen. Das Ergebnis wird nutzlos sein.

Wir können uns eine Annotation als ein Tag mit Attributen vorstellen. Wenn wir dieses Tag in unseren Code einfügen, bedeutet dies, dass unser Code bestimmte Eigenschaften aufweist, die durch die Annotation dargestellt werden, aber es bedeutet nicht, dass wir diese Eigenschaften haben in dem Moment, in dem ich es kommentiere.

Unser Code muss vor der Ausführung kompiliert werden. Zu diesem Zeitpunkt müssen wir auch Reflektion oder dynamischen Proxy-Code einbetten, um diese Klasse zu analysieren und die erforderlichen Eigenschaften hinzuzufügen Diese Klasse hat zu diesem Zeitpunkt die durch die Anmerkung dargestellte Bedeutung.

Als wir zum Beispiel im Kindergarten waren, mussten wir unsere Hände heben, um zur Toilette zu gehen, und der Lehrer führte uns dorthin. Zu diesem Zeitpunkt bedeutet das Heben der Hände, dass Sie die Anmerkung zum Gehen markiert haben Wenn der Lehrer es nicht tut. Wenn ich Ihnen die Schuld geben würde, könnten Sie nicht auf die Toilette gehen und müssten es zurückhalten. Wenn der Lehrer zu diesem Zeitpunkt die gesamte Klasse durchsucht und feststellt, dass Sie Ihre Kinder erhöhen Hände, sie wird zu dir gehen und dich mit einer Gruppe von Klassenkameraden, die alle ihre Hände heben, auf die Toilette bringen. Erst dann haben Sie Ihre Fähigkeit entwickelt, auf die Toilette zu gehen.

2. Implementierung

Die meisten Annotationen, die wir sehen, sind nicht wirklich von Java definiert, sondern nur die ersten vier Metaanmerkungen.

  • @Documented – ob die Annotation in JavaDoc aufgenommen wird

  • @Retention – wann diese Annotation verwendet werden soll

  • @Target – Wo wird die Annotation verwendet?

  • @Inherited – Ob Unterklassen diese Annotation erben dürfen

@ Dokumentiert bedeutet diese Annotation, ob die Beschreibung dieser Klasse oder Methode in unser Java-Dokument eingefügt werden soll, wenn wir javaDoc generieren. Im Allgemeinen ist es nutzlos, wenn Sie zum Generieren der Dokumentation nicht das mit Java gelieferte Projektdokumentationstool verwenden.

@Retention, diese Annotation stellt den Lebenszyklus der von uns definierten Annotation dar. Hier sind ihre verschiedenen Zuweisungen und Beschreibungen:

  1. RetentionPolicy.SOURCE: Während der Kompilierungsphase werfen weg. Diese Annotationen haben nach der Kompilierung keine Bedeutung mehr und werden daher nicht in den Bytecode geschrieben. @Override und @SuppressWarnings gehören alle zu dieser Art von Anmerkungen.

  2. RetentionPolicy.CLASS: wird verworfen, wenn die Klasse geladen wird. Nützlich bei der Verarbeitung von Bytecode-Dateien. Anmerkungen verwenden standardmäßig diese Methode

  3. RetentionPolicy.RUNTIME: Sie werden nie verworfen und die Anmerkung bleibt während der Laufzeit erhalten, sodass der Reflexionsmechanismus zum Lesen der Anmerkungsinformationen verwendet werden kann. Unsere benutzerdefinierten Anmerkungen verwenden normalerweise diese Methode

@Target, die angibt, wo die Anmerkung zum Markieren verwendet wird. Standardmäßig wird jedes Element markiert, und der Wert von ElementType kann ihm zugewiesen werden :

  1. ElementType.CONSTRUCTOR: wird zur Beschreibung des Konstruktors verwendet

  2. ElementType.FIELD: Mitgliedsvariablen, Objekte, Eigenschaften (einschließlich Enum-Instanzen)

  3. ElementType.LOCAL_VARIABLE: wird zur Beschreibung lokaler Variablen verwendet

  4. ElementType.METHOD: wird zur Beschreibung von Methoden verwendet

  5. ElementType.PACKAGE: wird zur Beschreibung von Paketen verwendet

  6. ElementType.PARAMETER: wird zur Beschreibung von Parametern verwendet

  7. ElementType.TYPE: wird zur Beschreibung von Klassen verwendet und Schnittstellen (einschließlich Annotationstypen) oder Enum-Deklaration

@Inherited definiert die Beziehung zwischen der Annotation und der Unterklasse Bestimmte Anmerkungstypen werden vererbt. Wenn für eine Klasse ein mit @Inherited geänderter Annotationstyp verwendet wird, wird diese Annotation für Unterklassen dieser Klasse verwendet.

Wir können eine Anmerkung anpassen:

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 水果名称注解
 */
@Target(FIELD)
@Retention(RUNTIME)
@Documented
public @interface FruitName {
    String value() default "";
}
Nach dem Login kopieren

Die obige Meta-Anmerkung ist für benutzerdefinierte Anmerkungsdienste.

3. Zusammenfassung

Kurz gesagt, eine Anmerkung ist eine Markierung, die zum Markieren von Code verwendet wird. Durch das Scannen verschiedener Anmerkungen können wir diese leicht erhalten den Inhalt unserer Annotations-Tags zum Betreiben der von uns geschriebenen Klassen oder Methoden. Im nächsten Artikel werde ich eine benutzerdefinierte Annotation definieren und ihre Implementierung schreiben.

Das obige ist der detaillierte Inhalt vonEin Artikel, der Ihnen hilft, Annotationen in Java zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage