티스토리 뷰
반응형
![]() |
|
제네릭으로 프로그램하다 보면 많은 컴파일러 경고 메시지를 보게 된다.
무점검 형변환 경고(unchecked cast warning), 무점검 메서드 호출 경고(unchecked method invocation warning), 무점검 제네릭 배열 생성 경고(unchecked generic array creation warning), 그리고 무점검 변환 경고(unchecked conversion warning) 등이 있다.
코드의 형 안전성(typesafe) 보장을 위해 모든 무점검 경고는, 가능하다면 없애야 한다. 제거할 수 없는 경고 메시지는 형 안정성이 확실할 때만 @SuppressWarnings(“unchecked”) 어노테이션(annotation)을 사용해 억제해야 한다.
SuppressWarnings 어노테이션은 개별 지역 변수 선언부터 클래스 전체에까지, 어떤 크기의 단위에도 적요할 수 있지만 가능한 작은 범위에 적용해야 한다. (중요한 경고 메시지를 놓치게 될 수 도 있다)
// @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.arraycopy(elements, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
@SuppressWarnings(“unchecked”) 어노테이션을 사용할 때마다, 왜 형 안전성을 위반하지 않는지 밝히는 주석을 반드시 붙여야 한다.
요약
- 무점검 경고(unchecked warning)는 중요하다
- 모든 무점검 경고는 프로그램 실행 도중에 ClassCastException이 발생할 가능성을 나타낸다
- 무점검 경고 메시지는 최선을 다해 제거하라
- 경고를 제거할 수 없으나 형 안전성을 보장한다는 사실을 입증할 수 있다면, @SuppressWarnings(“unchecked”) 어노테이션을 사용하되, 적용 범위는 최소화해야 한다
- 경고 메시지를 억제한 경우, 그 이유를 반드시 주석에 써야 한다
반응형
'프로그래밍 > Java' 카테고리의 다른 글
| [이펙티브 자바] 규칙26. 가능하면 제네릭 자료형으로 만들 것 (0) | 2017.11.28 |
|---|---|
| [이펙티브 자바] 규칙25. 배열 대신 리스트를 써라 (0) | 2017.11.28 |
| [이펙티브 자바] 규칙23. 새 코드에는 무인자 제네릭 자료형을 사용하지 마라 (0) | 2017.11.28 |
| [이펙티브 자바] 규칙22. 멤버 클래스는 가능하면 static으로 선언하라 (0) | 2017.11.22 |
| [이펙티브 자바] 규칙21. 전략을 표현하고 싶을 때는 함수 객체를 사용하라 (0) | 2017.11.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ruby on rails
- 개인투자자
- 해운주
- 한국항공우주
- HBM
- 원달러환율
- 반도체관련주
- 한화에어로스페이스
- 코스피
- 투자전략
- 한화오션
- SK하이닉스
- 현대차
- 알고리즘
- 자료구조
- 국제유가
- Java
- 한미반도체
- 삼성전자
- 주가전망
- 방산주
- Rails
- 호르무즈해협
- AI반도체
- 지정학적리스크
- ruby
- 엔비디아
- 주식투자
- 이펙티브 자바
- 로봇관련주
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
Copyright ⓒ 2018 moneystory.blog. All rights reserved.
