新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSSafeVarargs
SafeVarargs

@Documented
@Retention(RUNTIME)
@Target({CONSTRUCTOR,METHOD})
public @interface SafeVarargs程序員斷言帶注釋的方法或構造函數(shù)的主體不會對其 varargs 參數(shù)執(zhí)行潛在的不安全操作。 將此注釋應用于方法或構造函數(shù)會抑制有關不可具體化的變量 arity (vararg) 類型的未經(jīng)檢查的警告,并抑制有關在調(diào)用站點創(chuàng)建參數(shù)化數(shù)組的未經(jīng)檢查的警告。
除了 Target 元注解施加的使用限制外,編譯器還需要對該注解類型實施額外的使用限制; 如果使用 @SafeVarargs 注釋對方法或構造函數(shù)聲明進行注釋,則這是編譯時錯誤,并且:
- 聲明是固定數(shù)量的方法或構造函數(shù)
- 聲明是一個既不是靜態(tài)也不是最終的變量arity 方法。
鼓勵編譯器在將此注釋類型應用于方法或構造函數(shù)聲明時發(fā)出警告,其中:
- 可變arity 參數(shù)具有可具體化的元素類型,包括原始類型、Object 和String。 (對于可具體化的元素類型,此注釋類型抑制的未經(jīng)檢查的警告已經(jīng)不會出現(xiàn)。)
- 方法或構造函數(shù)聲明的主體執(zhí)行潛在的不安全操作,例如對變量 arity 參數(shù)數(shù)組的元素的賦值會生成未經(jīng)檢查的警告。 一些不安全的操作不會觸發(fā)未經(jīng)檢查的警告。 例如,別名在
@SafeVarargs // Not actually safe!
static void m(List... stringLists) {
Object[] array = stringLists;
List tmpList = Arrays.asList(42);
array[0] = tmpList; // Semantically invalid, but compiles without warnings
String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
} 在運行時導致 ClassCastException。
該平臺的未來版本可能會要求此類不安全操作出現(xiàn)編譯器錯誤。
文章名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSSafeVarargs
分享網(wǎng)址:http://fisionsoft.com.cn/article/dhihscs.html


咨詢
建站咨詢
