The Basics | Checker-Framework |
@SuppressWarnings | Learning More |
@Override | Links |
These @annotations not Javadoc comment tags! They are part of the program proper.
@Retention(RetentionPolicy.RUNTIME) means the following annotation should be retained in the class files.
@Target(ElementType.METHOD) means the following annotation only applies to methods in the class, not the whole class.
@Documents means the following annotation should show up in the Javadoc.
Now that you have defined it, you can annotate any class with it, which embeds the copyright notice in the class file, with otherwise changing the class file. It does not add any methods or fields to your class, though it is sometimes possible to get at the information through the java.lang.annotation package methods. Here is how you use it:
In Java version 1.5, Oracle introduced an annotation called @SuppressWarnings. Unfortunately, it is ignored prior to JDK (Java Development Kit) 1.5.0_06. You just insert the annotation prior to a class or method declaration telling which sort of warning you want suppressed. Further, you are not permitted to use them if you have -target 1.4 or earlier, not even @SuppressWarnings. You use them like this:
As well as classes and methods, @SuppressWarnings also applicable to enum, interface, constructor, field, parameter and local variable declarations.
Annotations do not inherit.
Here are the sorts of warning you can suppress:
@SuppressWarnings Options | |
---|---|
Option | Notes |
all | @SuppressWarnings( all ) means suppress all warnings |
allDeprecation | deprecation even inside deprecated code |
allJavadoc | invalid or missing Javadoc |
assertIdentifier | occurrence of assert used as identifier |
boxing | autoboxing conversion |
cast | cast operations |
charConcat | when a char array is used in a string concatenation without being converted explicitly to a string |
conditionAssign | possible accidental Boolean assignment |
constructorName | method with constructor name |
dep-ann | missing @Deprecated annotation |
deprecation | usage of deprecated type or member outside deprecated code |
emptyBlock | undocumented empty block |
enumSwitch | incomplete enum switch |
incomplete-switch | incomplete switch |
fallthrough | Mark that fallthrough in switch cases was deliberate, not just a missing break. |
fieldHiding | field hiding another variable |
finalBound | type parameter with final bound |
finally | finally block not completing normally |
hiding | shorthand for fieldHiding, localHiding, typeHiding and maskedCatchBlock |
indirectStatic | indirect reference to static member |
intfAnnotation | annotation type used as super interface |
intfNonInherited | interface non-inherited method compatibility |
Javadoc | invalid Javadoc |
localHiding | local variable hiding another variable |
maskedCatchBlocks | hidden catch block |
nls | non-nls string literals |
noEffectAssign | for assignment with no effect |
null | missing or redundant null check |
over-ann | missing @Override annotation |
pkgDefaultMethod | attempt to override package-default method |
rawtypes | un-specific types when using generics on class params |
restriction | usage of discouraged or forbidden references |
serial | missing serialVersionUID |
semicolon | unnecessary semicolon or empty statement |
specialParamHiding | constructor or setter parameter hiding another field |
static-access | shorthand for indirectStatic and staticReceiver |
staticReceiver | if a non static receiver is used to get a static field or call a static method |
suppress | enable @SuppressWarnings |
syntheticAccess | when performing synthetic access for innerclass |
synthetic-access | when performing synthetic access for innerclass |
tasks | enable support for tasks tags in source code |
typeHiding | type parameter hiding another type |
unchecked | unchecked type operation |
unnecessaryElse | unnecessary else clause |
unqualified-field-access | unqualified reference to field |
unqualifiedField | unqualified reference to field |
unused | shorthand for unusedArgument, unusedImport, unusedLocal, unusedPrivate and unusedThrown |
unusedArgument | unused method argument |
unusedImport | unused import reference |
unusedLocal | unused local variable |
unusedPrivate | unused private member declaration |
unusedThrown | unused declared thrown exception |
uselessTypeCheck | unnecessary cast/instanceof operation |
varargsCast | varargs argument need explicit cast |
warningToken | unhandled warning token in @SuppressWarnings |
Some of the options above are for Eclipse only, however, Javac will quietly ignore them.
There is no override keyword to warn the compiler your method is intended to override a method in the base class. However, since Java version 1.5 or later, there is an @Override annotation. @Override serves as documentation for the reader and a double check in the compiler. The compiler will warn you if your method is not overriding properly, usually because the two method names are not spelled exactly the same way. Note it is @Overridewith capital O and double r, not @overide. Don’t confuse the @Override annotation with the unofficial @override Javadoc command. Here is how you would use the @Override annotation to indicate that a method is overriding another in the base class. Note it is not inside the Javadoc comment!
/** * Get String presentation for this Thing object. * @return human readable summary of fields in Thing object. */ @Override public String toString() { return desc + " " + quantity + " " + losses; }
The university of Washington has put out a huge library of annotations called Checker-Framework. It is not built into Javac as I was first lead to believe. You must install it first in a rather daunting procedure. It works with ANT, Maven, IntelliJ, Eclipse and others, but not NetBeans.
It supports fake enums, using fenums, enums checked only at compile time, implemented with ordinary ints and hence backward compatible with code written before the invention of enums using @Fenum.
It checks your regex and format string syntax at compile time with @Regex and @Format.
It handles consistency of units of measure, but not automatic conversion of units, with annotations such as: @Area, @Current, @Length (@m, @mm, @km ), @Luminance, @Mass, @Speed, @Substance, @Temperature and @Time. You could spend weeks exploring the smorgasbord of tools included.
This page is posted |
http://mindprod.com/jgloss/annotations.html | |
Optional Replicator mirror
|
J:\mindprod\jgloss\annotations.html | |
Please read the feedback from other visitors,
or send your own feedback about the site. Contact Roedy. Please feel free to link to this page without explicit permission. | ||
Canadian
Mind
Products
IP:[65.110.21.43] Your face IP:[18.119.110.76] |
| |
Feedback |
You are visitor number | |