제네릭 함수 : 타입 아규먼트를 사용하는 함수 즉, 타입 파라미터를 갖는 함수를 얘기한다.
- 타입 파라미터는 컴파일러에 타입과 관련된 정보를 제공하여 컴파일러가 타입을 조금이라도 더 정확하게 추측할 수 있게 해준다.
- 컴파일 과정에서 타입 정보는 사라지지만 개발 중에는 특정 타입을 사용하게 강제할 수 있다.
제네릭 제한
- 타입 파라미터의 기능 중 하나로 구체적인 타입의 서브타입만 사용하게 타입을 제한한다.
public fun <T, C : MutableCollection<in T>> Iterable<T>.toCollection(destination: C): C {
for (item in this) {
destination.add(item)
}
return destination
}
- Any를 이용하여 nullable이 아닌 타입을 나타내는 케이스
public inline fun <T, R : Any> Iterable<T>.mapNotNull(transform: (T) -> R?): List<R> {
return mapNotNullTo(ArrayList<R>(), transform)
}
※ where 키워드
java의 upper bounds 와 비슷한 기능,
where T : CharSequence, T : Comparable<T>
// T 타입은 CharSequence와 Comparable을 모두 구현해야한다.
'Reading Record > 이펙티브 코틀린' 카테고리의 다른 글
[이펙티브 코틀린] Item24. 제네릭 타입과 variance 한정자를 활용하라 (0) | 2022.05.02 |
---|---|
[이펙티브 코틀린] Item23. 타입 파라미터의 섀도잉을 피하라 (0) | 2022.05.01 |
[이펙티브 코틀린] Item21. 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라 (0) | 2022.05.01 |
[이펙티브 코틀린] Item20. 일반적인 알고리즘을 반복해서 구현하지 말라 (0) | 2022.05.01 |
[이펙티브 코틀린] Item19. knowledge를 반복하여 사용하지 말라 (0) | 2022.05.01 |