本博客由 [Pipe](https://github.com/b3log/pipe) 强力驱动

Java 注解用法详解——@SuppressWarnings

一、前言

  编码时我们总会发现如下变量未被使用的警告提示:

imagepng

  上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWarnings("unused") 去除这些“感叹号”。

**二、 @SuppressWarings注解                            **

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

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


@SuppressWarnings("unchecked")

public void addItems(String item){
  @SuppressWarnings("rawtypes")
   List items = new ArrayList();
   items.add(item);
}```

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

@SuppressWarnings(value={"unchecked", "rawtypes"}) public void addItems(String item){
List items = new ArrayList();
items.add(item);
}

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

@SuppressWarnings("all") public void addItems(String item){
List items = new ArrayList();
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-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|
|finally |to suppress warnings relative to finally block that don’t return|
|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)|
|nls|to suppress warnings relative to non-nls string literals|
|null|to suppress warnings relative to null analysis|
|rawtypes|to suppress warnings relative to un-specific types when using generics on class params|
|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|o 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 Lint选项                            **

**  1\. lint的含义**

  用于在编译程序的过程中,进行更细节的额外检查。

**  2.  javac 的标准选项和非标准选项**

**标准选项:**是指当前版本和未来版本中都支持的选项,如 -cp 和 -d 等。

**非标准选项:**是指当前版本支持,但未来不一定支持的选项。通过 javac -X 查看当前版本支持的非标准选项。

![](https://images0.cnblogs.com/blog/347002/201410/211648020124434.png)

**  3\. 查看警告信息**

   默认情况下执行 javac 仅仅显示警告的扼要信息,也不过阻止编译过程。若想查看警告的详细信息,则需要执行 javac -Xlint:keyword 来编译源码了。

**六、总结**

  现在再都不怕不知道设置断点没有咯!
推荐阅读
留下你的脚步