在介绍 @SafeVarargs 注解用法之前,先来看看如下代码:

public class HelloWorld {public static void main(String[] args) {// 传递可变参数,参数是泛型集合4  display(10, 20, 30);// 传递可变参数,参数是非泛型集合6  display("10", 20, 30); // 会有编译警告}10  public static <T> void display(T... array) {for (T arg : array) {System.out.println(arg.getClass().getName() + ":" + arg);}}
}

代码第 10 行声明了一种可变参数方法 display,display 方法参数个数可以变化,它可以接受不确定数量的相同类型的参数。可以通过在参数类型名后面加入…的方式来表示这是可变参数。可变参数方法中的参数类型相同,为此声明参数是需要指定泛型。

但是调用可变参数方法时,应该提供相同类型的参数,代码第 4 行调用时没有警告,而代码第 6 行调用时则会发生警告,这个警告是 unchecked(未检查不安全代码),就是因为将非泛型变量赋值给泛型变量所发生的。

可用 @SafeVarargs 注解抑制编译器警告,修改代码如下:

public class HelloWorld {public static void main(String[] args) {// 传递可变参数,参数是泛型集合display(10, 20, 30);// 传递可变参数,参数是非泛型集合display("10", 20, 30); // 没有@SafeVarargs会有编译警告}@SafeVarargspublic static <T> void display(T... array) {for (T arg : array) {System.out.println(arg.getClass().getName() + ":" + arg);}}
}

上述代码在可变参数 display 前添加了 @SafeVarargs 注解,当然也可以使用 @SuppressWarnings(“unchecked”) 注解,但是两者相比较来说 @SafeVarargs 注解更适合。

注意:@SafeVarargs注解不适用于非 static 或非 final 声明的方法,对于未声明为 static 或 final 的方法,如果要抑制 unchecked 警告,可以使用 @SuppressWarnings 注解。

1.5 @SafeVarargs注解相关推荐

  1. java safevarargs_@SafeVarargs注解的使用

    在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告.鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全 ...

  2. Java @SafeVarargs注解

    在介绍 @SafeVarargs 注解用法之前,先来看看如下代码: public class HelloWorld {public static void main(String[] args) {/ ...

  3. 通俗易懂地讲解 Java 的注解

    作者 l 会点代码的大叔(CodeDaShu) 今天,我们来聊聊 Java 的注解. 01 注解的概念 Annotation(注解):先看看官方给出的概念,注解是 Java 提供的一种对元程序中元素关 ...

  4. 深入理解 Java 注解

    本文内容基于 JDK8.注解是 JDK5 引入的,后续 JDK 版本扩展了一些内容,本文中没有明确指明版本的注解都是 JDK5 就已经支持的注解. :notebook: 本文已归档到:「blog」 : ...

  5. 注解报错_Java中的注解使用:全面性的总结一下

    前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...

  6. java 注解使用_Java 注解用法

    Java 注解用法 1.简述 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) 与程序元素(类.方 ...

  7. 后端JAVA:说说你对【注解】的理解

    本文主要内容如下: 背景 现在已经处于注解盛行时代,注解@Override ,这个注解是再熟悉不过了,还有@Controller.@RequestMapping.@Service..... 注解已经是 ...

  8. Java 程序员必须掌握的 5 个注解

    转载自  Java 程序员必须掌握的 5 个注解 自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分.虽然开发者为Java框架(例如Spring的@Autowired)开发了无数的自定 ...

  9. 子类实现父类接口时注解为啥报错_Java中的注解使用:全面性的总结一下

    前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...

最新文章

  1. 2022秋招大战:算法岗挤破头,JAVA开发也被迫内卷
  2. 10种避免大型部署的方法
  3. 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
  4. js判断浏览器是否支持webGL
  5. 纯干货!文字识别在高德地图数据生产中的演进
  6. Hive分区、分桶操作及其比较(转自:http://blog.csdn.net/epitomizelu/article/details/41911657)
  7. CCS6.2超详细使用方法
  8. C# ObservableCollection和List的区别
  9. 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】
  10. 关于 p3p ie 跨域 问题
  11. Android官方开发文档Training系列课程中文版:手势处理之监测通用手势
  12. mysql查询当月数据_MySQL百万数据,你如何用分页来查询数据
  13. vue从创建到完整的饿了么(10)city.vue的完善(v-if 的简单使用及本地缓存的存储与读取)...
  14. Java案例实现用户登录
  15. amazon linux ami root 密码,如何使用SecureCRT连接到亚马逊Amazon EC2 Linux AMI
  16. Win11 开机资源管理器频繁崩溃闪退怎么处理?
  17. 敏捷迭代燃尽图_3个敏捷燃尽报告以及如何使用它们
  18. Bos物流项目之在线下单流程图
  19. 【推荐】两大APP与云账户红包SDK集成详情及Demon分享
  20. Linux安装水星MW150US

热门文章

  1. Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
  2. 微信小程序背景图虚化
  3. Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】...
  4. tjoi2018D2T2(luogu4590) 游园会 (状压dp)
  5. 第二次周考题目答案整理
  6. Python IDLE启动报错
  7. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  8. FPGA 起脚nCEO/IO管教设置问题
  9. ks minidriver 开发总结
  10. C++ Primer 5th笔记(chap 17 标准库特殊设施)IO库 之操纵符