PHpullh
학습 라이브러리/Kotlin/제네릭 함수 (Generic Functions)

KOTLIN · 함수

제네릭 함수 (Generic Functions)

타입 파라미터를 사용하여 다양한 타입에 동작하는 범용 함수를 작성합니다. reified로 런타임 타입 정보도 유지합니다.

함수중급genericsreifiedinlinetype-parameter

핵심 설명

타입 파라미터를 사용하여 다양한 타입에 동작하는 범용 함수를 작성합니다. reified로 런타임 타입 정보도 유지합니다.

Kotlin code

// 기본 제네릭 함수
fun <T : Comparable<T>> findMax(list: List<T>): T? =
    list.maxOrNull()

// 여러 타입 파라미터
fun <K, V> mapOfPairs(vararg pairs: Pair<K, V>): Map<K, V> =
    pairs.toMap()

// reified: 런타임에 타입 정보 유지
inline fun <reified T> List<*>.filterByType(): List<T> =
    filterIsInstance<T>()

inline fun <reified T> Any.isType(): Boolean = this is T

fun main() {
    println(findMax(listOf(3, 1, 4, 1, 5)))  // 5
    println(findMax(listOf("b", "a", "c")))   // c

    val mixed: List<Any> = listOf(1, "hello", 2.0, "world", 3)
    val strings = mixed.filterByType<String>()
    println(strings)  // [hello, world]

    println("Hello".isType<String>())  // true
    println(42.isType<String>())       // false
}

학습 팁

reified 타입 파라미터는 inline 함수에서만 사용 가능하며, 런타임 타입 검사나 리플렉션에 유용합니다.

주의할 점

reified를 사용하려면 함수가 반드시 inline이어야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.

자주 묻는 질문

제네릭 함수 (Generic Functions)란 무엇인가요?

타입 파라미터를 사용하여 다양한 타입에 동작하는 범용 함수를 작성합니다. reified 로 런타임 타입 정보도 유지합니다.

제네릭 함수 (Generic Functions) 학습 시 주의할 점은 무엇인가요?

reified 를 사용하려면 함수가 반드시 inline 이어야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.