原因:有時候由於某種原因,需要將代碼設置爲非受監測的類型,所以需要消除警告,保證代碼安全性。
消除警告的條件?
①、能夠在邏輯上保證代碼的安全性。
②、消除警告不要在整個類中使用,要在出現問題的代碼片段上使用。(縮小範圍)
舉例:(複製)
@SuppressWarnings("unchecked")
public T[] copyArray(T[] a){
int arraySize = 100;
//複製並擴容
if (a.length < arraySize){
//由於T[]是不可預測參數,所以會報錯
return (T[]) Arrays.copyOf(a, arraySize,a.getClass());
}
return null;
}
該方法中,能夠保證強制轉型之後的類型安全,所以能夠消除警告。
但是消除警告的範圍太大了,應該是這樣使用的
public class ArrayCopy <T>{
public T[] copyArray(T[] a){
int arraySize = 100;
//複製並擴容
if (a.length < arraySize){
//由於T[]是不可預測參數,所以會報錯
@SuppressWarnings("unchecked")
T[] b = (T[]) Arrays.copyOf(a, arraySize,a.getClass());
return b;
}
return null;
}
}
注:使用消除警告的時候,必須在旁邊寫註釋,爲什麼要消除警告