스터디/이펙티브 자바

[Effective Java] Item30. 이왕이면 제네릭 메서드로

📝 작성 : 2022.06.18  ⏱ 수정 : 
728x90

클래스와 마찬가지로 메서드도 제네릭으로 만들 수 있습니다. 매개변수화 타입을 받는 정적 유틸 메서드는 보통 제네릭입니다.

Collections의 '알고리즘' 메서드는 모두 제네릭입니다.

제네릭 메서드 작성법은 제네릭 타입 작성법과 비슷합니다.

public static Set union(Set s1, Set s2) {
    Set result = new HashSet(s1);
    result.addAll(s2);
    return result;
}

컴파일은 정상적으로 되지만 2개의 경고 메시지가 발생합니다.

경고 메시지

이 경고를 없애려면 메서드를 type-safe하게 만들어야 합니다.

 

타입 매개변수 명시

public static <E> Set<E> union(Set<E> s1, Set<E> s2) {
    Set<E> result = new HashSet<>(s1);
    result.addAll(s2);
    return result;
}

메서드 선언부와 구현부에 모두 타입 매개변수를 명시했습니다. 이때 반환 타입인 Set<E> 앞에 <E>가 추가되었습니다. (타입 매개변수들을 선언하는)타입 매개변수 목록은 메서드의 제한자와 반환타입 사이에 명시해주기 때문입니다.

위의 코드에서 타입 매개변수 목록은 <E>이고 반환타입은 Set<E>입니다.

단순한 제네릭 메서드라면 이 정도로 바꾸기만 해도 충분합니다.

반응형