클래스와 마찬가지로 메서드도 제네릭으로 만들 수 있습니다. 매개변수화 타입을 받는 정적 유틸 메서드는 보통 제네릭입니다.
제네릭 메서드 작성법은 제네릭 타입 작성법과 비슷합니다.
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>입니다.
단순한 제네릭 메서드라면 이 정도로 바꾸기만 해도 충분합니다.
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item32. 제네릭과 가변인수를 함께 쓸 때는 신중하게 (0) | 2022.06.18 |
---|---|
[Effective Java] Item31. 한정적 와일드카드를 사용해 API 유연성을 높여라 (0) | 2022.06.18 |
[Effective Java] Item29. 이왕이면 제네릭 타입으로 (0) | 2022.06.12 |
[Effective Java] Item28. 배열보다는 리스트 (0) | 2022.06.12 |
[Effective Java] Item27. 비검사 경고를 제거 (0) | 2022.06.11 |