Sie haben gerade eine annotation geschrieben.
In Bezug auf die default
Anweisung insbesondere: Dies wird verwendet, weil Anmerkungen und Schnittstellen keine Konstruktoren haben können, so ist dies die einzige Möglichkeit, einen Standardwert für ein Anmerkungsattribut zu haben. Von :
Für ein Annotationstyp-Element kann ein Standardwert angegeben werden. Dies geschieht, indem Sie der (leeren) Parameterliste mit dem Schlüsselwort default
und dem Standardwert des Elements folgen.
Die Standardwerte werden dynamisch zum Zeitpunkt des Lesens der Anmerkungen angewendet. Standardwerte werden nicht in Anmerkungen kompiliert. Daher wirkt sich die Änderung eines Vorschlagswerts auch auf Anmerkungen in Klassen aus, die vor der Änderung kompiliert wurden (vorausgesetzt, diesen Anmerkungen fehlt ein expliziter Wert für das vorgeschlagene Element).
Ich bemerke, dass keine der Anmerkungen in java.lang.annotation jedoch Standardwerte verwenden.
Verbrauch: Sie haben eine Anmerkung @HelloWorld
mit einem Attribut sayHello
. Man könnte es so auf eine Klasse setzen:
@HelloWorld(sayHello="Hi")
public class MyClass {
}
Da Sie einen Standardwert haben, die Sie gerade
setzen könnte
@HelloWorld
public class MyClass {
}
(Beachten Sie, dass das Dokument sagt: „In Anmerkungen mit einem einzigen Element, Das Element sollte value
genannt werden; "Ich glaube, der einzige Grund dafür ist, dass Sie einfach @HelloWorld("Hi")
schreiben könnten, ohne den Parameter benennen zu müssen.)
Wie beschrieben, kann Ihre Annotation für jedes gültige Programmelement (einschließlich Methoden und Variablendeklarationen) verwendet werden. Sie können dies mit der @Target
Annotation ändern.
Schließlich können Sie mit der Einstellung RetentionPolicy
entscheiden, ob die Annotation vom Compiler verworfen, von der VM verworfen oder immer beibehalten werden soll.
Zwei Pakete, die auch interessant sein könnte: javax.annotation und javax.annotation.processing. Und here ist ein Beispiel für die Verwendung der Annotationsverarbeitung für die Quellcodeanalyse.
Und nicht mit Java 8 Standard-Interface-Methoden verwechselt werden: http://java.dzone.com/articles/interface-default-methods-java –