Item 24. 무점검 경고(unchecked warning)를 제거하라

제네릭프로그램시 컴파일러 경고 메시지

컴파일러 경고 메시지

  • 무점검 형변환 경고(unchecked cast warning)
  • 무점검 메서드 호출 경고(unchecked method invocation warning)
  • 무점검 변환 경고(unchecked conversion warning)

컴파일러 경고 메시지 처리 방안

  • 모든 무점검 경고는 가능하다면 없애야 한다. => 안정성 보장
  • 제거할 수 없는 경고 메시지는 형 안전성이 확실할 때만 @SuperssWarnings('unchecked')을 사용해 억제하기 바란다
  • @SuperssWarnings은 가능한 작은 범위에 적용하라 ㄴ 변수 선언, 아주 짧은 메서드 또는 생성자 , 클래스 전체에 적용하지 않는다
  • @SuperssWarnings('unchecked')를 사용할 때마다, 왜 형 안전성을 위반하지 않는지 밝히는 주석을 반드시 붙여라
// @SuppressWarnings의 적용 범위를 줄이기 위해 지역 변수 사용
public <T> T[] toArray(T[] a) {
  if ( a.length < size) {
     // 아래의 형변환은 배열의 자료형이 인자로 전달된 자료형인 T[]와
     // 같으므로 정확하다.
     @SuppressWarnings("unchecked") T[] result =  
         (T[])Arrays.copyOf(elements, size, a.getClass());
     return result;
  }
  System.arrayCopry(elements, 0, a, 0, size);
  if ( a.length > size ) {
     a[size] = null;
  }
  return a;
}

results matching ""

    No results matching ""