본문 바로가기

이펙티브 자바

[이펙티브 자바] 아이템 29. 이왕이면 제네릭 타입으로 만들라

제네릭 타입 : 제네릭 타입은 자바에서 컬렉션과 같은 클래스나 인터페이스를 정의할 때, 타입 파라미터를 사용하여 타입 안정성을 확보하는 방법이다. 즉, 클래스나 인터페이스를 선언할 때 실제 타입이 아닌 타입 매개변수를 사용하여 일반화된 형태로 선언한다.

 

// 제네릭을 사용하지 않은 ArrayList
List list = new ArrayList();
list.add("Hello");
String item = (String) list.get(0); // 형변환 필요

// 제네릭을 사용한 ArrayList
List<String> list = new ArrayList<>();
list.add("Hello");
String item = list.get(0); // 형변환 필요 없음

 

결론 : 클라이언트에서 직접 형변환해야 하는 타입보다 제네릭 타입이 더 안전하고 쓰기 편하다. 그러니 새로운 타입을 설계할 때는 형변환 없이도 사용할 수 있도록 하라. 그렇게 하려면 제네릭 타입으로 만들어야 할 경우가 많다. 기존 타입 중 제네릭이었어야 하는 게 있다면 제네릭 타입으로 변경하자. 기존 클라이언트에는 아무 영향을 주지 않으면서, 새로운 사용자를 훨씬 편하게 해주는 길이다.