반응형
무점검 경고는 가능하다면 없애야 한다.
무점검 경고
에러는 당연히 제거하지만 경고에 대해서는 둔감한 개발자들이 있다. 분명 컴파일러가 문제될 수 있는 상황을 미리 알려주는것인데도 확인하지 않는다. 가능하면 모든 경고는 제거해야한다.
- 무점검 형변환 경고 (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이 발생할 가능성을 나타낸다.
반응형
'IT > Programming' 카테고리의 다른 글
<Effective Java> RULE 22 멤버클래스는 가능하면 static으로 선언하라 (0) | 2023.04.27 |
---|---|
<Effective Java> RULE 23 새 코드에는 무인자 제네릭 자료형을 사용하지 마라 (0) | 2023.04.27 |
<Effective Java> RULE 25 배열대신 리스트를 써라 (0) | 2023.04.27 |
<Effective Java> RULE 26 가능하면 제네릭 자료형으로 만들 것 (0) | 2023.04.27 |
<Effective Java> RULE 27 가능하면 제네릭 메서드로 만들 것 (0) | 2023.04.27 |