消除非受檢警告

利用泛型編程會遇到很多的警告比如非受檢強制轉化警告(unchecked cast warnings),非受檢方法調用警告、非受檢普通數組創建警告以及非受檢轉換警告。有些警告難以被消除,如果遇到無法消除的非受檢警告,同時可以證明警告的代碼是類型安全的(所謂類型安全的代碼是是指不會出現轉換出錯的問題,比如把父類強制轉換成子類)可以用@SuppressWarnings("unchecked")註解來禁止這條警告。但是這種消除警告的方法很有可能是不安全的,雖然在編譯的時候沒有警告但是還是有可能在運行的時候出現錯誤,拋出ClassCaseException異常。SuppressWarnings註解可以用在任何粒度的級別中,但是我們最好將其使用的範圍儘可能的小。永遠不要在整個類上使用它,這樣會掩蓋重要的警告。

 

public class Test<E>{
	
	private E[] elements;
	private int size=0;
	private static final int DEFAULT=16;
	@SuppressWarnings("unchecked")//如果無法消除警告並且可以證明引起警告的代碼是類型安全的,可以用這條語句來禁止這條警告。
	public Test(){
		elements=(E[])new Object[DEFAULT];//不能建立泛型數組
	}
	public void push(E e){
		elements[size++]=e;
	}
	public  E pop(){
		if(size==0)
			throw new EmptyStackException();
		E result=elements[--size];
		elements[size]=null;
		return result;
	}
	
}

每當使用SuppressWarnings時都要加上註釋解釋爲什麼這麼做事安全的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章