Definition
The @SuppressWarnings annotation is defined in the Java Language Specification section 9.6.1.5. This section states:The annotation typeSuppressWarnings
supports programmer control over warnings otherwise issued by the Java compiler. It contains a single element that is an array ofString
. If a program declaration is annotated with the annotation@SuppressWarnings(value = {
S1, ... , Sk}), then a Java compiler must not report any warning identified by one of S1, ... , Sk if that warning would have been generated as a result of the annotated declaration or any of its parts.
Unchecked warnings are identified by the string "unchecked"
.
The subsequent section on @Deprecation also mentions that these warnings can be suppressed with@SuppressWarnings("deprecation").
Valid Warning Types
The only two warning strings that are mentioned in the specification itself are "unchecked" and "deprecation". However, the Sun JDK uses a larger set of strings in the compiler. You can determine the current set by executing:
javac -X
which will show you (among other things) the valid settings for -Xlint. For example, Sun JDK 1.5 shows:
- all - suppress all warnings from this code
- deprecation - suppress warnings from using deprecated code
- unchecked - suppress warnings from an unchecked call or an unchecked cast
- fallthrough - suppress warnings if a switch falls through without finding a valid case (and no default)
- path -
- serial - suppress warnings if a Serializable class does not define a serialVersionUID
- finally - suppress warnings from return within a finally (which will ignore return with the try)
And Sun JDK 1.6 adds:
- cast
- divzero - suppress warnings if integer divide by zero is detected
- empty
- overrides
- none
IDEs and static analysis tools typically support a large number of other possible values for @SuppressWarnings. These values correspond to specific static analysis checks performed by the IDE.
Eclipse
The Eclipse warning values for Eclipse 3.3 are documented in the JDT docs.- all - suppress all warnings
- boxing - suppress warnings relative to boxing/unboxing operations
- cast - suppress warnings relative to cast operations
- dep-ann - suppress warnings relative to deprecated annotation
- deprecation - suppress warnings relative to deprecation
- fallthrough - suppress warnings relative to missing breaks in switch statements
- finally - suppress warnings relative to finally block that don't return
- hiding - suppress warnings relative to locals that hide variable
- incomplete-switch - suppress warnings relative to missing entries in a switch statement (enum case)
- nls - suppress warnings relative to non-nls string literals
- null - suppress warnings relative to null analysis
- restriction - suppress warnings relative to usage of discouraged or forbidden references
- serial - suppress warnings relative to missing serialVersionUID field for a serializable class
- static-access - suppress warnings relative to incorrect static access
- synthetic-access - suppress warnings relative to unoptimized access from inner classes
- unchecked - suppress warnings relative to unchecked operations
- unqualified-field-access - suppress warnings relative to field access unqualified
- unused - suppress warnings relative to unused code
IntelliJ
NetBeans
Examples
An example of specifying a single warning:
@SuppressWarnings("unchecked")
public void methodWithScaryWarnings() {
List rawList = new ArrayList();
List stringList = (List)rawList;
}
An example of using two warnings:
@SuppressWarnings({"unchecked","deprecation"})
public void methodWithScaryWarnings() {
public void methodWithScaryWarnings() {
callDeprecatedMethod();
}
0 comentaris:
Publica un comentari a l'entrada