Java @SafeVarargs注解
在介绍 @SafeVarargs 注解用法之前,先来看看如下代码:
代码第 10 行声明了一种可变参数方法 display,display 方法参数个数可以变化,它可以接受不确定数量的相同类型的参数。可以通过在参数类型名后面加入public class HelloWorld {
public static void main(String[] args) {
// 传递可变参数,参数是泛型
display(10, 20, 30);
// 传递可变参数,参数是非泛型
display("10", 20, 30); // 会有编译警告
}
public static <T> void display(T... array) {
for (T arg : array) {
System.out.println(arg.getClass().getName() + ":" + arg);
}
}
}
...的方式来表示这是可变参数。可变参数方法中的参数类型相同,为此声明参数是需要指定泛型。但是调用可变参数方法时,应该提供相同类型的参数,代码第 4 行调用时没有警告,而代码第 6 行调用时则会发生警告,这个警告是 unchecked(未检查不安全代码),就是因为将非泛型变量赋值给泛型变量所发生的。
可用 @SafeVarargs 注解抑制编译器警告,修改代码如下:
上述代码在可变参数 display 前添加了 @SafeVarargs 注解,当然也可以使用 @SuppressWarnings("unchecked") 注解,但是两者相比较来说 @SafeVarargs 注解更适。public class HelloWorld {
public static void main(String[] args) {
// 传递可变参数,参数是泛型
display(10, 20, 30);
// 传递可变参数,参数是非泛型
display("10", 20, 30); // 没有@SafeVarargs会有编译警告
}
@SafeVarargs
public static <T> void display(T... array) {
for (T arg : array) {
System.out.println(arg.getClass().getName() + ":" + arg);
}
}
}
注意:@SafeVarargs注解不适用于非 static 或非 final 声明的方法,对于未声明为 static 或 final 的方法,如果要抑制 unchecked 警告,可以使用 @SuppressWarnings 注解。
- 随机文章
- 婚礼 马尔代夫 蜜月(浪漫蜜月:马尔代夫私密海岛婚礼)
- 广东 马尔代夫 湛江(湛江旅游市场迎来新冠疫情后首个万人游:游客赴马尔代夫享受海岛魅力)
- 小马尔代夫萨尔达(萨尔达岛:小马尔代夫的美丽度假胜地)
- 上海 马尔代夫 东航(上海至马尔代夫直飞,东航航班正式首航!)
- 曲阳 马尔代夫(曲阳籍员工在马尔代夫留学深造)
- 手机马尔代夫壁纸(精美马尔代夫手机壁纸,让你身临其境)
- 水粉马尔代夫补色(水粉马尔代夫:绚烂色彩下的海洋天堂)
- 阿狸 马尔代夫(阿狸游马尔代夫)
- 生活继续马尔代夫(马尔代夫——宛如世外桃源的度假胜地)
- 济宁马尔代夫植物(济宁市民志愿者前往马尔代夫保护植物)
- 天堂马尔代夫评测(逃离尘嚣,天堂马尔代夫游玩体验评测)
- 浪漫马尔代夫婚礼(浪漫登记马尔代夫,人生一场爱情盛宴)
- 左州 马尔代夫(左州控股入主马尔代夫度假酒店)
- 美女旅游马尔代夫(美丽马尔代夫之旅:美女探索海底世界)
- 老湿解说马尔代夫(老湿解说马尔代夫:美到窒息的天堂!)
- 阜平的小马尔代夫(中国北方的天堂岛——阜平小马尔代夫)
- 观海长廊马尔代夫(观海长廊:探索马尔代夫海洋奇妙世界)
- 马尔代夫上岛游艇(探索马尔代夫:私人游艇魅力上岛之旅)
- 马尔代夫中国录播(马尔代夫精彩纷呈,中国录播全程呈现)
- 莱州 马尔代夫(莱州青年勇闯马尔代夫,开启海上新篇章)
- 马尔代夫亲子优惠(马尔代夫亲子游优惠活动,快来享受吧)
- 马尔代夫仙女照片(美如仙女!马尔代夫旅游照片震撼网友)
- 躺在马尔代夫海滩(休闲度假首选,畅享马尔代夫美丽海滩)
- 贝壳 马尔代夫(贝壳获得马尔代夫资产,扩大境外版图)
- 潍坊马尔代夫风水(潍坊建造马尔代夫式别墅挑战风水大师)
- 情侣游玩马尔代夫(情侣之间的理想目的地:浪漫马尔代夫)
- 法国 马尔代夫(法国游客即将重返马尔代夫,旅游业复苏迹象明显)
- 西安马尔代夫旅游(探索西安最新旅游热点:马尔代夫风情)
- 菲律宾飞马尔代夫(菲律宾缤纷与浪漫,如同飞往马尔代夫)
- 马尔代夫别盖小镇(重拾安宁之旅:体验马尔代夫别盖小镇)
