java suppress_Java中@SuppressWarnings注解用法(转)

背景:

J2SE提供的最后一个注解是@SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。

@SuppressWarnings注解允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加一个@SuppressWarnings注解,以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止您对警告无动于衷 — 您看到的每一个警告都将值得注意。

一、@SuppressWarings注解

作用:用于抑制编译器产生警告信息。

示例1、抑制单类型的警告:

@SuppressWarnings("unchecked")public voidaddItems(String item){

@SuppressWarnings("rawtypes")

List items= newArrayList();

items.add(item);

}

示例2、抑制多类型的警告:

@SuppressWarnings(value={"unchecked", "rawtypes"})public voidaddItems(String item){

List items= newArrayList();

items.add(item);

}

示例3、抑制所有类型的警告:

@SuppressWarnings("all")public voidaddItems(String item){

List items= newArrayList();

items.add(item);

}

二、注解目标

通过@SuppressWarnings的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。

而大家建议注解应声明在最接近警告发生的位置。

二、抑制警告的关键字

all to suppress all warnings (抑制所有警告)

boxing to suppress warnings relative to boxing/unboxing operations(抑制装箱、拆箱操作时候的警告)

cast to suppress warnings relative to cast operations (抑制映射相关的警告)

dep-annto 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  (抑制没被使用过的代码的警告)

参考: