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

More Related Content

Viewers also liked

Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자Sungho Moon
 
item15. 가변성을 최소화하자
item15. 가변성을 최소화하자item15. 가변성을 최소화하자
item15. 가변성을 최소화하자Sungho Moon
 
Item 24. 컴파일 경고 메시지가 없게 하자
Item 24. 컴파일 경고 메시지가 없게 하자Item 24. 컴파일 경고 메시지가 없게 하자
Item 24. 컴파일 경고 메시지가 없게 하자Sungho Moon
 
Item 30 int 상수 대신 enum을 사용하자
Item 30 int 상수 대신 enum을 사용하자Item 30 int 상수 대신 enum을 사용하자
Item 30 int 상수 대신 enum을 사용하자Sungho Moon
 
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
Item 33 서수 인덱스 대신EnumMap을 사용하자.Item 33 서수 인덱스 대신EnumMap을 사용하자.
Item 33 서수 인덱스 대신 EnumMap을 사용하자.Sungho Moon
 
item12. Comparable 인터페이스의 구현을 고려하자
item12. Comparable 인터페이스의 구현을 고려하자item12. Comparable 인터페이스의 구현을 고려하자
item12. Comparable 인터페이스의 구현을 고려하자Sungho Moon
 

Viewers also liked (6)

Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자
 
item15. 가변성을 최소화하자
item15. 가변성을 최소화하자item15. 가변성을 최소화하자
item15. 가변성을 최소화하자
 
Item 24. 컴파일 경고 메시지가 없게 하자
Item 24. 컴파일 경고 메시지가 없게 하자Item 24. 컴파일 경고 메시지가 없게 하자
Item 24. 컴파일 경고 메시지가 없게 하자
 
Item 30 int 상수 대신 enum을 사용하자
Item 30 int 상수 대신 enum을 사용하자Item 30 int 상수 대신 enum을 사용하자
Item 30 int 상수 대신 enum을 사용하자
 
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
Item 33 서수 인덱스 대신EnumMap을 사용하자.Item 33 서수 인덱스 대신EnumMap을 사용하자.
Item 33 서수 인덱스 대신 EnumMap을 사용하자.
 
item12. Comparable 인터페이스의 구현을 고려하자
item12. Comparable 인터페이스의 구현을 고려하자item12. Comparable 인터페이스의 구현을 고려하자
item12. Comparable 인터페이스의 구현을 고려하자
 

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