Was ist der Zweck von Anmerkungen in Java? Ich habe diese unscharfe Vorstellung von ihnen als irgendwo zwischen einem Kommentar und dem tatsächlichen Code. Beeinflussen sie das Programm zur Laufzeit?
Was sind ihre typischen Verwendungen?
Sind sie einzigartig in Java? Gibt es ein C ++ - Äquivalent?
java
annotations
glossary
Lehane
quelle
quelle
Antworten:
Anmerkungen werden hauptsächlich von Code verwendet, der anderen Code überprüft. Sie werden häufig verwendet, um vorhandene Klassen zur Laufzeit zu ändern (dh zu dekorieren oder zu verpacken), um ihr Verhalten zu ändern. Frameworks wie JUnit und Hibernate verwenden Anmerkungen, um die Menge an Code zu minimieren, die Sie selbst schreiben müssen, um die Frameworks zu verwenden.
Oracle hat auf seiner Website eine gute Erklärung des Konzepts und seiner Bedeutung in Java .
quelle
Nein, aber VB und C # haben Attribute , die dasselbe sind.
Ihre Verwendung ist sehr vielfältig. Ein typisches Java-Beispiel
@Override
hat keine Auswirkungen auf den Code, kann jedoch vom Compiler verwendet werden, um eine Warnung (oder einen Fehler) zu generieren, wenn die dekorierte Methode eine andere Methode nicht überschreibt. Ebenso können Methoden als veraltet markiert werden.Dann gibt es Reflexion. Wenn Sie einen Klassentyp in Ihrem Code widerspiegeln, können Sie auf die Attribute zugreifen und gemäß den dort enthaltenen Informationen handeln. Ich kenne keine Beispiele in Java, aber in .NET wird dies vom Compiler verwendet, um (De-) Serialisierungsinformationen für Klassen zu generieren , das Speicherlayout von Strukturen zu bestimmen und Funktionsimporte aus Legacy-Bibliotheken (unter anderem) zu deklarieren . Sie steuern auch, wie der IDE-Formular-Designer funktioniert.
/ EDIT: Attribute für Klassen sind vergleichbar mit Tag-Schnittstellen (wie Serializable in Java). In den .NET-Codierungsrichtlinien wird jedoch festgelegt, keine Tag-Schnittstellen zu verwenden. Außerdem arbeiten sie nur auf Klassenebene, nicht auf Methodenebene.
quelle
Anders gibt eine gute Zusammenfassung und hier ist ein Beispiel für eine JUnit-Annotation
Hier
@Test
sagt die Annotation JUnit, dass dieflatfileMissing
Methode ein Test ist, der ausgeführt werden sollte, und dass das erwartete Ergebnis ein Wurf istIOException
. Wenn Sie also Ihre Tests ausführen, wird diese Methode aufgerufen und der Test wird bestanden oder fehlgeschlagen, je nachdem, ob ein TestIOException
ausgelöst wird.quelle
Java verfügt auch über das Annotation Processing Tool (apt), mit dem Sie nicht nur Annotationen erstellen, sondern auch entscheiden, wie diese Annotationen im Quellcode funktionieren.
Hier ist eine Einführung.
quelle
Schauen Sie sich meine JavaBean-Annotationen und den Annotation-Prozessor an , um einige coole Dinge zu sehen, die Sie mit Annotations machen können .
Sie eignen sich hervorragend zum Generieren von Code und zum Hinzufügen zusätzlicher Validierungen während Ihres Builds. Ich habe sie auch für ein Fehlermeldungs-Framework verwendet (noch nicht veröffentlicht - muss mit den Vorgesetzten geklärt werden ...).
quelle
Per Literaldefinition fügt eine Anmerkung einem Element Notizen hinzu. Ebenso sind Java-Annotationen Tags, die wir in den Quellcode einfügen, um weitere Informationen zum Code bereitzustellen. Java-Annotationen verknüpfen Informationen mit dem annotierten Programmelement. Neben Java-Anmerkungen verfügen Java-Programme über zahlreiche informelle Dokumentationen, die normalerweise in Kommentaren in der Quellcodedatei enthalten sind. Java-Annotationen unterscheiden sich jedoch von Kommentaren, mit denen die Programmelemente direkt mit Annotationstypen versehen werden, um die Form der Annotationen zu beschreiben. Java Annotations präsentieren die Informationen auf standardmäßige und strukturierte Weise, sodass sie von Verarbeitungswerkzeugen problemlos verwendet werden können.
Um im Detail zu lesen, gibt es ein schönes Tutorial zu Java Annotations
quelle
Wann verwenden Sie die @ Override-Annotation von Java und warum? Der Link bezieht sich auf eine Frage, wann die Override-Annotation (@override) verwendet werden soll. Dies könnte helfen, das Konzept der Annotation besser zu verstehen.
quelle
Anmerkungen in Bezug auf EJB werden als impliziter Middleware-Ansatz gegenüber einem expliziten Middleware-Ansatz bezeichnet. Wenn Sie Anmerkungen verwenden, passen Sie an, was Sie genau über die API benötigen, z. B. müssen Sie die Transaktionsmethode für eine Überweisung aufrufen : ohne Verwendung von Annotation: Der Code wird sein
Während der Verwendung von Annotation enthält Ihr Code keine umständlichen API-Aufrufe zur Verwendung der Middleware-Dienste. Der Code ist sauber und auf Geschäftslogik ausgerichtet
quelle