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

Item 26. 제네릭 타입을 애용하자

  • 1.
    Item 26. 제네릭 타입을애용하자 Chapter 5. 제네릭
  • 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.
    요약 • 클라이언트 코드에서캐스팅을 해야 하는 타입보다 제네 릭 타입이 더 안전하고 쓰기 쉽다. • 새로운 타입을 설계할 때는 그런 캐스팅 없이 사용가능한 지 확인하자. • 시간이 닿는 대로 기존 타입을 제네릭화 하자.