2. 제네릭 타입을 쓰는 이유?
• 컴파일 타임 때의 타입 체크
• 캐스팅 감소
• 제네릭 알고리즘 사용 (?)
List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);
List<String> list = new ArrayList<String>();
list.add("hello");
String s = list.get(0); // no cast
3. 제네릭화–제네릭 타입을 사용도록 개선
1. 클래스 선언부에 타입 매개변수 추가
2. 클래스의 모든 Object타입을 타입 매개변수로 변경
3. 제네릭 배열 생성 에러
1. Object 배열 생성 후 캐스팅
2. 원소의 타입을 제네릭 타입에서 Object로 바꿈
4. 제네릭화–제네릭 타입을 사용도록 개선
• 기본형을 저장하는 제네릭 컬렉션은 생성불가
– 기본형에 대응하는 박스형 기본형을 사용
• 허용 가능 값을 제한하는 제네릭-bounded type
parameter
5. 요약
• 클라이언트 코드에서 캐스팅을 해야 하는 타입보다 제네
릭 타입이 더 안전하고 쓰기 쉽다.
• 새로운 타입을 설계할 때는 그런 캐스팅 없이 사용가능한
지 확인하자.
• 시간이 닿는 대로 기존 타입을 제네릭화 하자.