java中@SuppressWarnings注解用法详解

 更新时间:2021年02月04日 09:54:58   作者:liulz  
这篇文章主要介绍了java中@SuppressWarnings注解用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

SuppressWarnings注解是jse提供的注解。作用是屏蔽一些无关紧要的警告。使开发者能看到一些他们真正关心的警告。从而提高开发者的效率

简介:

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")

@SuppressWarnings注解的作用

J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。
@SuppressWarnings 批注允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,
您就可以添加一个 @SuppressWarnings 批注,以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止
您对警告无动于衷 — 您看到的每一个警告都将值得注意。

我经常遇到的问题是不晓得什么时候用@SupressWarnings的什么批注好,所以做了如下整理

使用:

  • @SuppressWarnings(“”)
  • @SuppressWarnings({})
  • @SuppressWarnings(value={})

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

到此这篇关于java中@SuppressWarnings注解用法详解的文章就介绍到这了,更多相关java @SuppressWarnings注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud构建Eureka应用的方法

    Spring Cloud构建Eureka应用的方法

    这篇文章主要介绍了Spring Cloud构建Eureka应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • springboot自定义过滤器的方法

    springboot自定义过滤器的方法

    这篇文章主要为大家详细介绍了springboot自定义过滤器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 一文带你搞懂Spring响应式编程

    一文带你搞懂Spring响应式编程

    相信响应式编程经常会在各种地方被提到。本篇就为大家从函数式编程一直到Spring WeFlux做一次简单的讲解,并给出一些示例,希望大家可以更好的理解响应式编程
    2022-07-07
  • maven项目后出现‘parent.relativePath’ of POM错误时的解决方法

    maven项目后出现‘parent.relativePath’ of POM错误时的解决方法

    在Springboot项目启动时,项目报错‘parent.relativePath’ of POM问题,项目无法正常启动,本文就来介绍一下解决方法,感兴趣的可以了解一下
    2023-10-10
  • MybatisPlus插件自动维护更新和创建时间方式

    MybatisPlus插件自动维护更新和创建时间方式

    这篇文章主要介绍了MybatisPlus插件自动维护更新和创建时间方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • MybatisPlus保存、读取MySQL中的json字段失败问题及解决

    MybatisPlus保存、读取MySQL中的json字段失败问题及解决

    这篇文章主要介绍了MybatisPlus保存、读取MySQL中的json字段失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java并发中的Fork/Join 框架机制详解

    Java并发中的Fork/Join 框架机制详解

    本文主要介绍了 Java 并发框架中的 Fork/Join 框架的基本原理和其使用的工作窃取算法(work-stealing)、设计方式和部分实现源码,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • java底层AQS实现类ReentrantLock锁的构成及源码解析

    java底层AQS实现类ReentrantLock锁的构成及源码解析

    本章我们就要来学习一下第一个 AQS 的实现类:ReentrantLock,看看其底层是如何组合 AQS ,实现了自己的那些功能,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • SpringBoot中@Scheduled()注解以及cron表达式详解

    SpringBoot中@Scheduled()注解以及cron表达式详解

    这篇文章主要介绍了SpringBoot中@Scheduled()注解以及cron表达式详解,@Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行,需要的朋友可以参考下
    2023-08-08
  • SpringBoot+shardingsphere实现按月分表功能教程

    SpringBoot+shardingsphere实现按月分表功能教程

    这篇文章主要介绍了SpringBoot+shardingsphere实现按月分表功能教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04

最新评论