## Excluding warnings using @SuppressWarnings

Since Java 5.0, you can disable compilation warnings relative to a subset of a compilation unit using the `java.lang.SuppressWarning` annotation.

     @SuppressWarning("unused") public void foo() {
      String s;
     }

Without the annotation, the compiler would complain that the local variable `s` is never used. With the annotation, the compiler silently ignores this warning locally to the `foo` method. This enables to keep the warnings in other locations of the same compilation unit or the same project.

The list of tokens that can be used inside a `SuppressWarnings` annotation is:

- all to suppress all warnings
- boxing to suppress warnings relative to boxing/unboxing operations
- cast to suppress warnings relative to cast operations
- dep-ann to suppress warnings relative to deprecated annotation
- deprecation to suppress warnings relative to deprecation
- fallthrough to suppress warnings relative to missing breaks in switch statements
- finally to suppress warnings relative to finally block that don't return
- hiding to suppress warnings relative to locals that hide variable
- incomplete-switch to suppress warnings relative to missing entries in a switch statement (enum case)
- javadoc to suppress warnings relative to javadoc warnings
- nls to suppress warnings relative to non-nls string literals
- null to suppress warnings relative to null analysis
- rawtypes to suppress warnings relative to usage of raw types
- resource to suppress warnings relative to usage of resources of type Closeable
- restriction to suppress warnings relative to usage of discouraged or forbidden references
- serial to suppress warnings relative to missing serialVersionUID field for a serializable class
- static-access to suppress warnings relative to incorrect static access
- static-method to suppress warnings relative to methods that could be declared as static
- super to suppress warnings relative to overriding a method without super invocations
- synthetic-access to suppress warnings relative to unoptimized access from inner classes
- sync-override to suppress warnings because of missing synchronize when overriding a synchronized method
- unchecked to suppress warnings relative to unchecked operations
- unqualified-field-access to suppress warnings relative to field access unqualified
- unused to suppress warnings relative to unused code and dead code