원글 페이지 : 바로가기
제네릭 메서드 작성 방법 매개변수화 타입을 받는 정적 유틸리티 메서드는 보통 제네릭이다. Collections의 binarySearch,sort 등 알고리즘 메서드는 모두 제네릭이다. 제네릭 메서드 작성법은 제네릭 타입 작성법과 비슷하다. 타입 매개변수 목록은 메서드의 제한자와 반환 타입 사이에 온다. public static
Set
result.addAll(s2);
return result;
} 위 코드의 세개의 Set집합이 타입이 모두 같아야 한다. 이를 한정적 와일드 카드 타입을 이용하면 더 유연하게 개선이 가능하다. 제네릭 싱글턴 팩터리 (불변 객체가 제네릭 타입) 불변 객체를 여라 타입으로 활용할 때가 있다. 제네릭은 런타임시 타입 정보가 소거되므로 하나의 객체를 어떤 타입으로든 매개변수화 할 수 있다. 객체를 매개변수화하려면 요청 타입 매개변수에 맞게 매번 그 객체의 타입을 바꿔주는 정적 팩터리가 필요하다. 이 정적 팩터리 제네릭 싱글톤 팩터리라고 한다. List
str.sort(Collections.reverseOrder()); // 이처럼 함수 내부에 들어가는 객체를 함수객체라고 함
public static
// T 타입으로 캐스팅된 Singleton ReverseComparator 반환, 타입정보는 소거됨으로 그때그때 캐스팅만 되는 것
return (Comparator
} private static UnaryOperator
@SuppressWarinings(“unchecked”)
public static
return (UnaryOperator
} 항등함수는 입력 값을 수정 없이 그대로 반환하는 특별한 함수이므로 T가 어떤 타입이든 UnaryOperation
int compareTo(T o);
} 타입 매개변수 T는 Comparable
if(c.isEmpty()){
throw new IllegalArgumentException(“컬렉션이 비었습니다.”);
}
E result = null;
for (E e : c){
if(result == null || e.compareTo(result) > 0){
result = Objects.requireNonNull(e);
}
}
return result;
} //추상 클래스는 아래와 같이 구현
abstract static class Builder
public static class Builder extends PayCard.Builder