IT/Programming / / 2023. 4. 27. 09:28

<Effective Java> RULE 24 무점검 경고(unchecked warining)을 제거하라

반응형

 

 
무점검 경고는 가능하다면 없애야 한다.

 

무점검 경고

에러는 당연히 제거하지만 경고에 대해서는 둔감한 개발자들이 있다. 분명 컴파일러가 문제될 수 있는 상황을 미리 알려주는것인데도 확인하지 않는다. 가능하면 모든 경고는 제거해야한다.

- 무점검 형변환 경고 (unchecked cast warning)

- 무점검 메서드 호출 경고 (unchecked method invocation warning)

- 무점검 제네릭 배열 생성 경고 (unchecked generic array creation warning)

- 무점검 변환 경고 (unchecked conversion warning)

Public <T> T[] toArray(T[] a){
    if(a.length < size)
        return (T[]) *Arrays.copyOf*(elements, size, a.getClass());
    System.arraycopy(elements, 0, a, 0, size);
    if(a.length > size)
        a[size] = null;
    return a;
}

->
Public <T> T[] toArray(T[] a){
    if(a.length < size){
        @SupressWarnings("unckecked") (T[]) result =
             *Arrays.copyOf*(elements, size, a.getClass());
        return result;
    }
    System.arraycopy(elements, 0, a, 0, size);
    if(a.length > size)
        a[size] = null;
    return a;
}
 

- 경고를 제거할 수 없는 경고 메세지는 형 안전성이 확실할 때만 @Supress Warning(“unchecked”) 어노테이션을 사용해 억제

ㄴClassCastException이 발생할 가능성은 존재

- SupressWarning 어노테이션은 가능한 작은 범위에 적용

ㄴ변수선언, 아주 짧은 메서드, 생성자에 붙힘

ㄴ절대 클래스 전체에 어노테이션을 적용하지 않도록 하자, 중요한 경고메세지를 놓칠 수도 있다.

 

@SupressWarnings("unckecked")를 사용할 때마다 왜 형 안전성을 위반하지 않는지 밝히는 주석을 반드시 붙혀라.

무점검 경고는 중요하다. 모든 무점검 경고는 프로그램 실행 도중 ClassCastException이 발생할 가능성을 나타낸다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유