第二十四条:消除非受检的警告

原因:有时候由于某种原因,需要将代码设置为非受监测的类型,所以需要消除警告,保证代码安全性。

消除警告的条件?

①、能够在逻辑上保证代码的安全性。

②、消除警告不要在整个类中使用,要在出现问题的代码片段上使用。(缩小范围)

举例:(复制)

	@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 {
	
	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;
	}
}
注:使用消除警告的时候,必须在旁边写注释,为什么要消除警告


你可能感兴趣的:(EffectiveJava)