Generics
1 Generics
- 코틀린에서 제네릭 클래스의 기본 개념은 자바와 비슷하다.
- [[Generic]] 참고
1.1 Type Parameter
- Generic을 사용하면 타입 파라미터를 받는 타입을 지정할 수 있다.
- Generic Type의 인스턴스를 만드려면 타입 파라미터(
Type Parameter
)를 구체적인 타입 인자(type argument
)로 치환해야 한다.- 예를 들어
Map<K, V>
라는 Generic Type이 있을 때Map<String, Person>
처럼 구체적인 타입을 타입 인자로 넘기면 Generic Type을 인스턴스화할 수 있다.
- 예를 들어
- 자바와 달리 코틀린에서는 제네릭 타입의 타입 인자를 프로그래머가 명시하거나 컴파일러가 추론할 수 있어야 한다.
- 자바에서는 리스트 원소 타입을 지정하지 않고 List 타입의 변수를 선언할 수 있다.
- 이전 버전과 호환성을 유지하기 위해 타입 인자가 없는 타입(로 타입)을 허용한다.
- 코틀린은 제넥릭을 처음부터 도입했기 때문에 로 타입을 지원하지 않는다.
- 따라서 제네릭 타입의 타입 인자를 명시하거나 추론할 수 있어야 한다.
예시
val authors = listOf("Dmitry", "Svetlana")