2. SuppressWarnings
• 컴파일 시 warning을 무시하도록 지시
• 확실치 않은 상태에서 사용하면 안됨
• 가급적 제일 작은 범위로 사용
• 절대 하나 이상의 클래스 전체에 대해 SuppressWarnings를 사용하
지 말자
• 한 줄 이상의 코드로 된 메소드나 생성자
– 내부의 지역 변수 선언부에 SuppressWarnings
4. SuppressWarnings
@SuppressWarnings("unchecked")
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
ArrayList의 toArray(T[] a)
5. SuppressWarnings
public <T> T[] toArray(T[] a) {
if (a.length < size) {
// 우리가 생성하는 배열이 인자로 전달된 것(T[])과
// 같은 타입이므로 이렇게 캐스팅하는 것이 적법하다.
@SuppressWarnings("unchecked")
T[] result = (T[]) Arrays.copyOf(elementData, size, a.getClass());
return result;
}
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
ArrayList의 toArray(T[] a)
6. 요약.
• unchecked 경고 메시지는 중요하므로 무시하지 말자.
• 모든 unchecked 경고 메시지는 런타임 시에 ClassCastException 예외가 생길
수 있다는 것을 나타낸다.
• 최선을 다해 경고를 없애자.
• 경고 메시지를 없앨 수는 없지만 그 메시지를 유발하는 코드가 타입 안전을 보
장한다면, 가급적 최소의 범위로 @SuppressWarnings(“unchecked”) 주석을
사용해서 경고 메시지를 억제하자.
• 경고 메시지를 억제한 이유를 별도의 주석으로 작성하자.