[Effective Java 3/e] 아이템 30 - 이왕이면 제네릭 메서드로 만들라
아이템 30 - 이왕이면 제네릭 메서드로 만들라
제네릭으로 변경
로 타입 사용 - 수용 불가
public static Set union(Set s1, Set s2) {
Set result = new HashSet(s1);
result.addAll(s2);
return result;
}
제네릭 메서드
public static <E> Set<E> union(Set<E> s1, Set<E> s2) {
Set<E> result = new HashSet(s1);
result.addAll(s2);
return result;
}
항등함수(identity function)를 담은 클래스
제네릭 싱글턴 팩터리 패턴
private static UnaryOperator<Object> IDENTITY_FN = (t) -> t;
@SuppressWarnings("unchecked")
public static <T> UnaryOperator<T> identityFunction() {
return (UnaryOperator<T>) IDENTITY_FN;
}
재귀적 타입 한정을 이용해 상호 비교할 수 있음을 표현했다
public static <E extends Comparable<E>> E max(COllection<E> c);
- 타입 한정인 <E extends Comparable
>는 "모든 타입 E는 자신과 비교할 수 있다"
정리
- 클라이언트에서 입력 매개변수와 반환값을 명시적으로 형변환해야 하는 메서드보다 제네릭 메서드가 더 안전하며 사용하기 쉽다.