在 Java 自带的注解中,有一个叫做 SuppressWarnings 的注解,它是用来抑制编译器输出的注解,通常我们 Java 中的代码有时会出现编译时输出 warning 的情况,通过这个注解可以通知编译器不输出对应类型的 warning.本篇文章会阐述 SuppressWarnings 的意义与基本用法
源码
我们可以看一下这个注解的源码
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
可以看到,它只接收一个 String 数组作为参数,它只在源码中会出现,不参与编译,它可以用于几乎任何地方
用处
在我们进行编程时,有时会有一些类型的转换,如将 Object 转到对应的类型,写代码的时候知道这些转换是正确的,但是编译器并不清楚,所以会给出一个警告,但并不影响编译和执行.如果我们想要消除这些警告,我们就可以使用这个注解
比如,我们写出了以下的代码(并不符合规范,不要学)
List list = new LinkedList();
list.add("boyn.top");
String s = (String) list.get(0);
那么就会给出这样的警告,只要我们在方法开头加上一个注解 @SuppressWarnings("unchecked")
这个警告就会被消除
详细用法
SuppressWarnings 可以抑制多种类型的警告,其表如下
关键字 | 用途 |
---|---|
all | 所有警告 |
boxing | 装箱/拆箱操作的警告 |
cast | 强制转型操作的警告 |
dep-ann | 使用了标记 deprecated 注解的类/方法的警告 |
deprecation | 被删除的类的警告 |
fallthrough | 在 switch 中缺少 break 语句 |
finally | finally 中没有 return 语句 |
hiding | 本地隐藏的变量 |
incomplete-switch | switch 方法没有入口 |
nls | 非 nls 的字符串 |
null | 可能会造成 null 的操作 |
rawtypes | 多类型的警告 |
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 |
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 |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于