상태 대표
컬렉션이나 저장소가 담는 값 전체를 T가 대표하면 add, get, find 반환 타입이 일관됩니다.
제네릭 클래스와 인터페이스는 저장할 값, 외부 계약, 반환 타입을 하나의 타입 매개변수 흐름으로 묶습니다.
컬렉션이나 저장소가 담는 값 전체를 T가 대표하면 add, get, find 반환 타입이 일관됩니다.
T extends HasId처럼 필요한 속성을 제약하면 구현 내부에서 안전하게 접근할 수 있습니다.
인터페이스에 제네릭을 두면 같은 구조를 User, Product, DTO 같은 도메인별 타입으로 재사용합니다.
T가 무엇을 대표하는지 이름이나 문맥에서 보이는지 확인합니다.
구현이 요구하는 속성은 extends로 드러냅니다.
입력과 반환이 같은 타입 흐름에 묶이는지 봅니다.
새 도메인 타입을 넣어도 계약이 유지되는지 점검합니다.