Java中@SuppressWarnings注解的用法
1.理解
指示应在带批注的元素(以及批注元素中包含的所有程序元素)中抑制命名编译器警告。请注意,给定元素中抑制的警告集是所有包含元素中抑制的警告的超集。例如,如果您注释一个类以抑制一个警告,并注释一个方法以抑制另一个警告,则这两个警告都将在方法中被抑制。
就风格而言,程序员应该始终在最深层嵌套的元素上使用此注释,因为它是有效的。如果要在特定方法中禁止显示警告,则应注释该方法而不是其类。
2.应用目标
@Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
@Retention(value=SOURCE)
public @interface SuppressWarnings
通过@SuppressWarnings的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。
3.关键字
关键字 | 用途 |
---|---|
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(抑制确在switch中缺失breaks的警告) |
finally | to suppress warnings relative to finally block that don’t return(抑制finally模块没有返回的警告) |
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) (忽略没有完整的switch语句) |
nls | to suppress warnings relative to non-nls string literals (忽略非nls格式的字符) |
null | to suppress warnings relative to null analysis (忽略对null的操作) |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params (使用generics时忽略没有指定相应的类型) |
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(忽略在serializable类中没有声明serialVersionUID变量) |
static-access | to suppress warnings relative to incorrect static access (抑制不正确的静态访问方式警告) |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes (抑制子类没有按最优方法访问内部类的警告) |
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 (抑制没被使用过的代码的警告) |