? Java Annotationen in Java 1.5 hinzugefügt wurden, können zusätzliche Informationen über eine Klasse , Methode oder ein Feld hinzuzufügen. Diese Informationen können in verschiedenen Weisen, wie detailliert, wie ein Programm ausgeführt werden soll , oder welche Methoden sollten von anderen Entwicklern vermieden werden verwendet werden. Je nachdem, wie die Anmerkungen wurden ursprünglich codiert , können diese Informationen nur in der Original- Quellcode zur Verfügung , bei der Arbeit mit der kompilierten Klasse direkt oder zur Laufzeit über Reflektion . ? Was sind Anmerkungen
Einfach ausgedrückt, ist eine Anmerkung ein Mittel zusätzliche Informationen - auch als Metadaten bezeichnet - zu Ihrem Programm über die kommentierten Artikel . Diese Informationen können so einfach sein wie eine Notiz Detaillierung Urheberschaft oder etwas so Komplexes wie Assoziieren ein Feld mit einer Datenbank-Spalte . Anmerkungen können in eine von drei Arten behandelt werden : indem sie ausschließlich in der Original-Quellcode , wo sie sind in der Regel nur an andere Entwickler , indem sie in den Bytecode , wo sie sind nicht für die Runtime- Verarbeitung zur Verfügung kompiliert , aber zur Verfügung stehen Programme Zugriff auf die Class-Dateien und kompiliert wird , so dass die Informationen zur Laufzeit geladen wird , so wird das laufende Programm darauf zugreifen kann
Warum verlangen Annotation Details unter Runtime
Weil . ? Entwickler können angeben, zusätzliche Informationen zu einem Artikel, mit diese Informationen zur Laufzeit ermöglichen ein Programm , anders zu handeln für dieses Element ohne notwendigerweise , dass die Informationen zu kompilieren (oder sogar -Funktion). Betrachten Sie zum Beispiel eine Anmerkung , dass Mitarbeiter ein Feld mit einer Datenbank-Spalte , vielleicht wäre es in etwa so aussehen :
@ DBField ( " VORNAME " )
private String firstName ;
< p> Während der Ausführung könnte das Programm diese Informationen lesen und erkennen, sollte das Feld basierend auf dem Inhalt dieser Spalte zu füllen ( gewährt , es müsste auch Tisch -und Zeilen- Informationen ) . Dies würde auch dem Benutzer erlauben, zu schreiben, zum Beispiel , eine generische Daten-Handling -Routine, die auf Anmerkungen vertraut und braucht nicht viel Spezialisierung für jede Klasse.
Wie Java Annotations ignoriert
Wie bereits erwähnt, gibt es drei Möglichkeiten für den Compiler , um eine Anmerkung kommt es ganz im Code behandeln : durch Verschrottung sie (und damit so dass es nur im Code ) , indem man es in den Bytecode und indem man es in den Bytecode mit der erforderlichen Informationen, um es zur Laufzeit zu laden . Die zweite Option - Kompilieren in den Bytecode (ohne dass diese zur Laufzeit) - ist die Standardeinstellung für alle Anmerkungen , so wenn nicht anders angegeben , eine Anmerkung wird nicht zur Laufzeit verfügbar . Doch diese Angabe ist sehr einfach, wenn man Zugriff auf die Annotation den Quellcode haben . Fügen Sie einfach eine zusätzliche Anmerkung zu der Annotation Definition :
@ Retention ( RetentionPolicy.RUNTIME )
öffentlichen @ interface MyAnnotation ...
Mit der Annotation zur Laufzeit
Sobald Sie die Annotation sichergestellt ist zur Laufzeit verfügbar , es zu benutzen ist äußerst einfach. Angenommen, Sie haben eine Anmerkung mit dem Namen " Autor " mit einem String-Wert , können Sie den folgenden Code , um sicherzustellen, dass Sie haben Zugriff auf die Laufzeit Anmerkung :
endgültige Autor author = MyClass.class.getAnnotation ( Author. Klasse);
System.out.println ( author.value ());
In diesem Fall würde MyClass wie folgt erklärt werden :
@ Autor ( " John Doe " )
public class MyClass ...
Wenn Sie die Zeilen ausführen oben , sollten Sie den Wert für die Annotation ( " John Doe ", in diesem Fall) auf der Konsole .