1.5 @SafeVarargs注解
在介绍 @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注解相关推荐
- java safevarargs_@SafeVarargs注解的使用
在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告.鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全 ...
- Java @SafeVarargs注解
在介绍 @SafeVarargs 注解用法之前,先来看看如下代码: public class HelloWorld {public static void main(String[] args) {/ ...
- 通俗易懂地讲解 Java 的注解
作者 l 会点代码的大叔(CodeDaShu) 今天,我们来聊聊 Java 的注解. 01 注解的概念 Annotation(注解):先看看官方给出的概念,注解是 Java 提供的一种对元程序中元素关 ...
- 深入理解 Java 注解
本文内容基于 JDK8.注解是 JDK5 引入的,后续 JDK 版本扩展了一些内容,本文中没有明确指明版本的注解都是 JDK5 就已经支持的注解. :notebook: 本文已归档到:「blog」 : ...
- 注解报错_Java中的注解使用:全面性的总结一下
前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...
- java 注解使用_Java 注解用法
Java 注解用法 1.简述 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) 与程序元素(类.方 ...
- 后端JAVA:说说你对【注解】的理解
本文主要内容如下: 背景 现在已经处于注解盛行时代,注解@Override ,这个注解是再熟悉不过了,还有@Controller.@RequestMapping.@Service..... 注解已经是 ...
- Java 程序员必须掌握的 5 个注解
转载自 Java 程序员必须掌握的 5 个注解 自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分.虽然开发者为Java框架(例如Spring的@Autowired)开发了无数的自定 ...
- 子类实现父类接口时注解为啥报错_Java中的注解使用:全面性的总结一下
前话: 今天,我们又来聊一下注解的使用,做一下详细的解析,也介绍了自定义注解,请耐心往下看哟! 注解的介绍: 在2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解 ...
最新文章
- 2022秋招大战:算法岗挤破头,JAVA开发也被迫内卷
- 10种避免大型部署的方法
- 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
- js判断浏览器是否支持webGL
- 纯干货!文字识别在高德地图数据生产中的演进
- Hive分区、分桶操作及其比较(转自:http://blog.csdn.net/epitomizelu/article/details/41911657)
- CCS6.2超详细使用方法
- C# ObservableCollection和List的区别
- 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】
- 关于 p3p ie 跨域 问题
- Android官方开发文档Training系列课程中文版:手势处理之监测通用手势
- mysql查询当月数据_MySQL百万数据,你如何用分页来查询数据
- vue从创建到完整的饿了么(10)city.vue的完善(v-if 的简单使用及本地缓存的存储与读取)...
- Java案例实现用户登录
- amazon linux ami root 密码,如何使用SecureCRT连接到亚马逊Amazon EC2 Linux AMI
- Win11 开机资源管理器频繁崩溃闪退怎么处理?
- 敏捷迭代燃尽图_3个敏捷燃尽报告以及如何使用它们
- Bos物流项目之在线下单流程图
- 【推荐】两大APP与云账户红包SDK集成详情及Demon分享
- Linux安装水星MW150US
热门文章
- Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
- 微信小程序背景图虚化
- Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】...
- tjoi2018D2T2(luogu4590) 游园会 (状压dp)
- 第二次周考题目答案整理
- Python IDLE启动报错
- 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
- FPGA 起脚nCEO/IO管教设置问题
- ks minidriver 开发总结
- C++ Primer 5th笔记(chap 17 标准库特殊设施)IO库 之操纵符