Annotationen in Java
Eine Annotation ist eine Information, die verschiedenen Programmteilen, insbesondere Deklarationen, beigefügt werden kann. Sie wird mit dem kommerziellen À »@« und dem ihm folgenden Namen eines Referenztyps geschrieben, der entsprechend als Annotationstyp gekennzeichnet worden sein muß.
Man kann sich eine Annotation zunächst wie ein Kommentar vorstellen. Allerdings ist es bei einer Annotation deutlicher festgelegt, auf welchen Teil des Quelltextes sie sich bezieht (in der Regel auf den ihr folgenden). Während ein Kommentar frei in Deutsch oder Englisch formuliert werden kann, gelten für Annotationen strengere Regeln. Dadurch wird es dann auch möglich, daß Annotationen von Programmen verarbeitet werden können. Einige Annotationen dienen zunächst – wie ein Kommentar – nur dem Festhalten einer Information, ohne daß sie sich sonst weiter auswirken. Anderen Annotation werden vom Compiler verarbeitet, und können so beispielsweise die Interpretation eines Quelltextes steuern.
Die Annotation »@java.lang.SuppressWarnings«
Ein Programm sollte möglichst ohne Meldungen (Warnungen) kompiliert werden, da tolerierte Warnungen dazu führen können, daß andere Warnungen übersehen werden.
Mit der Annotation »@java.lang.SuppressWarnings« ist es möglich, für eine Deklaration Warnungen eines bestimmten Typs abschalten zu können.
Solch eine Annotation wird aber normalerweise angebracht, nachdem eine bestimmte Warnung für eine Deklaration gelesen wurde und der Programmierer sich sicher ist, daß er die Warnung in diesem Fall ignorieren möchte.
Dabei wird davon Gebrauch gemacht, daß eine Annotation auch Argumente haben kann. Bei »@java.lang.SuppressWarnings« ist das Argument ein Wort, welches festlegt, welche Warnung abgeschaltet werden soll.
- Main.java ::=
public final class Main
{ public static void method()
{ final int i = 1 / 0; } public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main" ); }}- Compiler-Ausgabe (»javac -Xlint:all …«)
Main.java:3: warning: [divzero] division by zero
{ final int i = 1 / 0; }
^
1 warning
Die Compiler-Option »-Xlint:all« die Ausgabe detaillierte Meldungen zu möglicherweise fehlerhaften Teilen eines Programms. Bei der Übersetzung des voranstehenden Programms mit dem JKD von 2015 und der Compiler-Option »-Xlint:all« erscheint die oben gezeigte Warnung.
Das Wort »divzero« als Argument der Annotation »@java.lang.SuppressWarnings« schaltet dann die zuvor angezeigte Warnung für die Methode »method« ab.
Dabei wurde davon Gebrauch gemacht, daß eine Annotation auch Argumente haben kann. Bei »@java.lang.SuppressWarnings« ist das Argument ein Wort, welches festlegt, welche Warnung abgeschaltet werden soll.
- Main.java ::=
public final class Main
{ @java.lang.SuppressWarnings( "divzero" )
public static void method()
{ final int i = 1 / 0; } public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main" ); }}- Compiler-Ausgabe
- (keine Warnung)
java.lang.System.out
main