Item 24.
컴파일 경고 메시지가 없게 하자
Chapter 5. 제네릭
SuppressWarnings
• 컴파일 시 warning을 무시하도록 지시
• 확실치 않은 상태에서 사용하면 안됨
• 가급적 제일 작은 범위로 사용
• 절대 하나 이상의 클래스 전체에 대해 SuppressWarnings를 사용하
지 말자
• 한 줄 이상의 코드로 된 메소드나 생성자
– 내부의 지역 변수 선언부에 SuppressWarnings
SuppressWarnings
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)
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)
요약.
• unchecked 경고 메시지는 중요하므로 무시하지 말자.
• 모든 unchecked 경고 메시지는 런타임 시에 ClassCastException 예외가 생길
수 있다는 것을 나타낸다.
• 최선을 다해 경고를 없애자.
• 경고 메시지를 없앨 수는 없지만 그 메시지를 유발하는 코드가 타입 안전을 보
장한다면, 가급적 최소의 범위로 @SuppressWarnings(“unchecked”) 주석을
사용해서 경고 메시지를 억제하자.
• 경고 메시지를 억제한 이유를 별도의 주석으로 작성하자.

More Related Content

PPTX
Item10. toString 메소드는 항상 오버라이드 하자
PPTX
item15. 가변성을 최소화하자
PPTX
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
PPTX
Item 26. 제네릭 타입을 애용하자
PPTX
Item 30 int 상수 대신 enum을 사용하자
PPTX
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
PPTX
item12. Comparable 인터페이스의 구현을 고려하자
PPTX
Item 22. static 멤버 클래스를 많이 사용하자
Item10. toString 메소드는 항상 오버라이드 하자
item15. 가변성을 최소화하자
Item 19. 타입을 정의할 때만 인터페이스를 사용하자.
Item 26. 제네릭 타입을 애용하자
Item 30 int 상수 대신 enum을 사용하자
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
item12. Comparable 인터페이스의 구현을 고려하자
Item 22. static 멤버 클래스를 많이 사용하자
Ad

Item 24. 컴파일 경고 메시지가 없게 하자

  • 1. Item 24. 컴파일 경고 메시지가 없게 하자 Chapter 5. 제네릭
  • 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”) 주석을 사용해서 경고 메시지를 억제하자. • 경고 메시지를 억제한 이유를 별도의 주석으로 작성하자.