华南俳烁实业有限公司

java

當前位置:中華考試網(wǎng) >> java >> java基礎 >> 文章內(nèi)容

Java@SafeVarargs注解

來源:中華考試網(wǎng)  [2020年11月17日]  【

  在介紹 @SafeVarargs 注解用法之前,先來看看如下代碼:

  public class HelloWorld { public static void main(String[] args) { // 傳遞可變參數(shù),參數(shù)是泛型集合 display(10, 20, 30); // 傳遞可變參數(shù),參數(shù)是非泛型集合 display("10", 20, 30); // 會有編譯警告 } public static void display(T... array) { for (T arg : array) { System.out.println(arg.getClass().getName() + ":" + arg); } }}

  代碼第 10 行聲明了一種可變參數(shù)方法 display,display 方法參數(shù)個數(shù)可以變化,它可以接受不確定數(shù)量的相同類型的參數(shù)?梢酝ㄟ^在參數(shù)類型名后面加入...的方式來表示這是可變參數(shù)?勺儏(shù)方法中的參數(shù)類型相同,為此聲明參數(shù)是需要指定泛型。

  但是調(diào)用可變參數(shù)方法時,應該提供相同類型的參數(shù),代碼第 4 行調(diào)用時沒有警告,而代碼第 6 行調(diào)用時則會發(fā)生警告,這個警告是 unchecked(未檢查不安全代碼),就是因為將非泛型變量賦值給泛型變量所發(fā)生的。

  可用 @SafeVarargs 注解抑制編譯器警告,修改代碼如下:

  填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!

預約申請免費聽java課程

  • 地區(qū):
  • 姓名:
  • 手機:

  public class HelloWorld { public static void main(String[] args) { // 傳遞可變參數(shù),參數(shù)是泛型集合 display(10, 20, 30); // 傳遞可變參數(shù),參數(shù)是非泛型集合 display("10", 20, 30); // 沒有@SafeVarargs會有編譯警告 } @SafeVarargs public static void display(T... array) { for (T arg : array) { System.out.println(arg.getClass().getName() + ":" + arg); } }}

  上述代碼在可變參數(shù) display 前添加了 @SafeVarargs 注解,當然也可以使用 @SuppressWarnings("unchecked") 注解,但是兩者相比較來說 @SafeVarargs 注解更適合。

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

責編:fushihao

上一篇:Java查詢個人信息

下一篇: 沒有了

  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
驻马店市| 元朗区| 乐都县| 牡丹江市| 三都| 泽库县| 大新县| 顺昌县| 江城| 连州市| 黑龙江省| 旬阳县| 平远县| 鲁甸县| 安新县| 文登市| 金乡县| 深水埗区| 天津市| 富顺县| 大邑县| 南漳县| 开平市| 南宁市| 肥城市| 兴化市| 温州市| 积石山| 上思县| 永康市| 酒泉市| 于都县| 大方县| 泰兴市| 新闻| 建宁县| 宜良县| 西青区| 介休市| 平湖市| 南江县|