忽略警告注解@SuppressWarnings详解

摘要:
·@SuppressWarnings告诉编译器忽略未选中和已抑制的警告。

简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。

作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
使用:
@SuppressWarnings(“”)
@SuppressWarnings({})
@SuppressWarnings(value={})

根据sun的官方文档描述:
value - 将由编译器在注释的元素中取消显示的警告集。允许使用重复的名称。忽略第二个和后面出现的名称。出现未被识别的警告名不是 错误:编译器必须忽略无法识别的所有警告名。但如果某个注释包含未被识别的警告名,那么编译器可以随意发出一个警告。

各编译器供应商应该将它们所支持的警告名连同注释类型一起记录。鼓励各供应商之间相互合作,确保在多个编译器中使用相同的名称。

示例:

·   @SuppressWarnings("unchecked")

  告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。

·   @SuppressWarnings("serial")

  如果编译器出现这样的警告信息:The serializable class WmailCalendar does not declare a static final serialVersionUID field of type long

 使用这个注释将警告信息去掉。

·   @SuppressWarnings("deprecation")

  如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。
 使用这个注释将警告信息去掉。

·   @SuppressWarnings("unchecked", "deprecation")

  告诉编译器同时忽略unchecked和deprecation的警告信息。

·   @SuppressWarnings(value={"unchecked", "deprecation"})

  等同于@SuppressWarnings("unchecked", "deprecation")

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

免责声明:文章转载自《忽略警告注解@SuppressWarnings详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iTerm2配置优化互联网电商高并发解决方案(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ArrayList集合中的elementData为什么不参与序列化?

在ArrayList中有这么一段代码    /** * 存储ArrayList元素的数组缓冲区。ArrayList的容量是此数组缓冲区的长度。 * 添加第一个元素时,任何带有elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA的空ArrayList都将扩展为DEFAULT_CAPACITY。...

Java线程并发中常见的锁--自旋锁 偏向锁

随着互联网的蓬勃发展,越来越多的互联网企业面临着用户量膨胀而带来的并发安全问题。本文着重介绍了在java并发中常见的几种锁机制。 1.偏向锁 偏向锁是JDK1.6提出来的一种锁优化的机制。其核心的思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,就无需再进行相关的同步操作...

Java 的ArrayList构造方法

目录 ArrayList 构造方法使用 ArrayList 类常用方法 ArrayList集合存储字符串遍历 简单的学生管理系统   1、ArrayList 构造方法 ArrayList类概述  什么是集合   提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ‘   ArrayList集合的特点 底层是数组实现的,长度可以变化   泛型的...

JAVA发红包案例

模拟拼手气红包* 对于指定总金额以及红包个数,可以生成不同金额的红包,*,每个红包金额随机生成。* 分析这个题目:* 1.首先需要一个分发红包的方法.输入的参数是 总金额 以及 红包个数.* 按照这两个参数生成不同金额的(double)类型的红包,存放进ArrayList中.* 2.然后需要抢红包的...

使用redis时出现java.util.ArrayList cannot be cast to java.lang.Long

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:222) at redis.client...

Java 集合源代码——ArrayList

(1)可以查看大佬们的 详细源码解析 : 连接地址为 : https://blog.csdn.net/zhumingyuan111/article/details/78884746 (2) ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与...