Generics
다음 내용을 정리한다.
- 제네릭 타입 파라미터
- 제네릭 함수
- 제네릭 클래스
- 제네릭 타입 파라미터 제약
- 제네릭스 동작 원리
제네릭 타입 파마리터
제네릭스를 사용하면, 타입 파마리터를 받는 타입을 정의할 수 있다.
제네릭 타입의 인스턴스를 만들려면, 타입 파라미터를 구체적인 타입 파라미터로 치환해야한다.
예를 들어, Map 클래스는 키 타입과 값 타입을 타입 파리미터로 받으므로 Map<K, V> 이다.
이 제네릭 클래스에 대해 제네릭 타입의 인스턴스를 만들려면,
Map<String, Person> 처럼 구체적인 타입 파라미터로 치환해서 인스턴스화할 수 있다.
타입 파라미터 추론
코틀린 컴파일러는 보통의 타입과 마찬가지로, 타입 파라미터도 추론가능하다.
코틀린 Collections 의 listOf function 에는 아래 처럼, 타입 파라미터 T 가 정의되어 있다.
아래에서는, listOf 에 전달된 두 값이 문자열이므로 여기서 생기는 리스트가 List<String>
임을 추론한다.