타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는 것
제네릭을 이용하면 어떤 타입에도 유연하게 대응할 수 있다.
재사용하기도 쉽고, 코드의 중복을 줄일 수 있다.
실제 타입은 함수가 호출되는 순간 결정된다.
하나의 타입 매개변수를 갖지 않고 여러 개의 타입 매개변수를 갖고 싶다면 홀화살괄호 기호 안쪽에 쉼표로 분리한 여러 개의 타입 매개변수를 지정 해줄 수 있다
타입 매개변수가 가져야 할 제약사항을 지정할 수 있는 방법
제네릭 타입에 제약을 주고 싶으면 타입 매개변수 뒤에 콜론을 붙인 후 원하는 클래스 타입 또는 프로토콜을 명시하면 된다.
여러 제약을 추가하고 싶다면 콤마로 구분하는 것이 아닌 where절을 이용한다.