brunch

You can make anything
by writing

C.S.Lewis

by 이승현 Jun 19. 2018

제네릭(Generics)

#27 제네릭 메서드를 애용하자

Effective Java - 제네릭(Generics)


#27 제네릭 메서드를 애용하자


제네릭 메서드


이 메서드(union)는 두 개의 Set의 합을 반환하고 있습니다.

당연히 unchecked 경고가 2개가 나타나고 있는데 안전하지 않습니다.

#01 union method


제네릭 메서드로 만들면 아래와 같습니다.

경고들도 사라지고 타입 안전도 보장됩니다.

#02 Generic union method




재귀적 타입 바운스(recursive type bound)


재귀적 타입 바운드 (recursive type bound)는 타입 매개변수가 자신을 포함하는 수식에 의해 한정되는 것을 말한다.

예를 들면, 아래 코드에서 타입 매개변수 T는 Comparable<T>를 구현하는 타입을 정의합니다.

Comparable<String>은 String 비교를, Comparable<Integer>는 Integer 비교를 구현합니다.

#04 Comparable<T> interface


주로 List에서 이 Comparable 인터페이스를 구현을 통해 목록을 정렬, 검색, 최소 최대 값을 구하고 있습니다.

결국 List는 모든 목록 요소들이 비교 가능(comparable) 해야 합니다.

이 요소들이 비교 가능하다는 것을 표현하기 위해 아래와 같이 재귀적 타입 바운드를 이용할 수 있습니다.

#05 재귀적 타입 바운드


단순히 T를 타입 매개변수로만 이용하지 않고, Comparable<T>를 상속받아 정렬이 가능한 매개 변수 T로 구현했습니다.




이제까지 제네릭에 대한 내용의 결론은 런타임이 아닌 컴파일 단계에서 타입 체크를 해서 보다 안전하게 이용하자 입니다.

이를 위해 별도의 캐스팅이 없는 메서드는 제네릭을 이용할 수 있습니다.

매거진의 이전글 제네릭(Generics)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari