generic placement

제네릭 선언 위치 선택표

제네릭은 클래스, 인터페이스, 함수 중 어디에 붙이느냐에 따라 재사용 범위와 추론 방식이 달라집니다.

상태를 오래 보관할 때

class

인스턴스 전체가 같은 타입을 쓴다

Box<T>처럼 저장된 값과 메서드가 같은 타입 변수에 묶입니다.

repository

도메인 저장소 생성

Repository<User>처럼 한 타입의 목록과 조회 결과를 유지합니다.

계약을 재사용할 때

interface

형태만 공유한다

KeyValuePair<K, V>처럼 구현과 분리된 데이터 계약을 둡니다.

callback

입출력 관계 고정

콜백 시그니처에 제네릭을 두면 입력 타입에 맞는 반환 타입을 유지할 수 있습니다.