在介紹 @SafeVarargs 注解用法之前,先來看看如下代碼:
public class HelloWorld { public static void main(String[] args) { // 傳遞可變參數(shù),參數(shù)是泛型集合 display(10, 20, 30); // 傳遞可變參數(shù),參數(shù)是非泛型集合 display("10", 20, 30); // 會有編譯警告 } public static
代碼第 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è)!
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
上述代碼在可變參數(shù) display 前添加了 @SafeVarargs 注解,當然也可以使用 @SuppressWarnings("unchecked") 注解,但是兩者相比較來說 @SafeVarargs 注解更適合。
注意:@SafeVarargs注解不適用于非 static 或非 final 聲明的方法,對于未聲明為 static 或 final 的方法,如果要抑制 unchecked 警告,可以使用 @SuppressWarnings 注解。
上一篇:Java查詢個人信息
下一篇: 沒有了
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結構工程師巖土工程師安全工程師設備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論