我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连,感谢~
- 声明:
- 原作者为:博客园:山清水秀ysu
- 原文链接:https://www.cnblogs.com/weixiuli/p/6407248.html
前言
- J2SE 提供的最后一个批注是 @SuppressWarnings,该批注的作用是给编译器一条指令。告诉它对被批注的代码元素内部的某些警告保持静默。
- @SuppressWarnings 批注允许你选择性地取消特定代码段(即,类或方法)中的警告,其中的想法是当你看到警告时,你将调查它,如果你确定它不是问题,你就可以添加一个 @SuppressWarnings 批注,以使你不会再看到警告。
- 虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止你对警告无动于衷 — 你看到的每一个警告都将值得注意。
一、如何使用
编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的【感叹号】就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWarnings(“unused”) 去除这些【感叹号】
二、注解参数介绍
案例一:抑制单类型的警告
@SuppressWarnings("unchecked")
public void addItems(String item){
@SuppressWarnings("rawtypes")
List items = new ArrayList();
items.add(item);
}
案例二:抑制多类型的警告
@SuppressWarnings(value={"unchecked", "rawtypes"})
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}
案例三:抑制所有类型的警告
@SuppressWarnings("all")
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}
三、注解目标范围
- 通过 @SuppressWarnings 的源码可知,其注解目标为:类字段、函数、函数入参、构造函数和函数的局部变量,而大家建议注解应声明在最接近警告发生的位置。
四、注解关键字的作用范围
- all: 抑制所有警告
- boxing: 抑制装箱、拆箱操作时候的警告
- cast: 抑制映射相关的警告
- dep-ann: 抑制启用注释的警告
- deprecation: 抑制过期方法警告
- fallthrough: 抑制确在switch中缺失breaks的警告
- finally: 抑制finally模块没有返回的警告
- hiding: 抑制与隐藏变量的本地人相关的警告
- incomplete-switch: 忽略没有完整的switch语句
- nls: 忽略非nls格式的字符
- null: 忽略对null的操作
- rawtypes: 使用generics时忽略没有指定相应的类型
- restriction: 抑制与使用不鼓励或禁止引用相关的警告
- serial: 忽略在serializable类中没有声明serialVersionUID变量
- static-access: 抑制不正确的静态访问方式警告
- synthetic-access: 抑制子类没有按最优方法访问内部类的警告
- unchecked: 抑制没有进行类型检查操作的警告
- unqualified-field-access: 抑制没有权限访问的域的警告
- unused: 抑制没被使用过的代码的警告
|