W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
@Documented
@Retention(RUNTIME)
@Target({CONSTRUCTOR,METHOD})
public @interface SafeVarargs
程序員斷言帶注釋的方法或構(gòu)造函數(shù)的主體不會(huì)對(duì)其 varargs 參數(shù)執(zhí)行潛在的不安全操作。 將此注釋應(yīng)用于方法或構(gòu)造函數(shù)會(huì)抑制有關(guān)不可具體化的變量 arity (vararg) 類型的未經(jīng)檢查的警告,并抑制有關(guān)在調(diào)用站點(diǎn)創(chuàng)建參數(shù)化數(shù)組的未經(jīng)檢查的警告。
除了 Target 元注解施加的使用限制外,編譯器還需要對(duì)該注解類型實(shí)施額外的使用限制; 如果使用 @SafeVarargs 注釋對(duì)方法或構(gòu)造函數(shù)聲明進(jìn)行注釋,則這是編譯時(shí)錯(cuò)誤,并且:
鼓勵(lì)編譯器在將此注釋類型應(yīng)用于方法或構(gòu)造函數(shù)聲明時(shí)發(fā)出警告,其中:
@SafeVarargs // Not actually safe!
static void m(List<String>... stringLists) {
Object[] array = stringLists;
List<Integer> tmpList = Arrays.asList(42);
array[0] = tmpList; // Semantically invalid, but compiles without warnings
String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
}
在運(yùn)行時(shí)導(dǎo)致 ClassCastException。
該平臺(tái)的未來版本可能會(huì)要求此類不安全操作出現(xiàn)編譯器錯(cuò)誤。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: