在 Java 自带的注解中,有一个叫做 SuppressWarnings 的注解,它是用来抑制编译器输出的注解,通常我们 Java 中的代码有时会出现编译时输出 warning 的情况,通过这个注解可以通知编译器不输出对应类型的 warning.本篇文章会阐述 SuppressWarnings 的意义与基本用法 源码 ..

Java @SuppressWarnings 注解详解

在 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
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2355 引用 • 7823 回帖 • 890 关注
回帖
请输入回帖内容...