[kotlin] 코틀린에서의 제네릭 타입 변환 함수

개요

코틀린은 강력한 타입 시스템을 가지고 있으며, 제네릭 타입을 사용하여 코드의 재사용성과 안정성을 높일 수 있습니다. 제네릭 타입은 하나의 타입을 여러 다른 타입에 대해 사용할 수 있도록 도와줍니다. 그러나 때로는 제네릭 타입을 다른 타입으로 변환해야 할 때가 있을 수 있습니다. 이러한 경우에는 제네릭 타입 변환 함수를 사용할 수 있습니다.

제네릭 타입 변환 함수 작성하기

제네릭 타입 변환 함수를 작성할 때는 확장 함수 형태로 작성하는 것이 일반적입니다. 다음은 코틀린에서 제네릭 타입을 다른 타입으로 변환하는 함수를 작성하는 예제입니다.

inline fun <reified T> Any?.cast(): T? {
    return if (this is T) this else null
}

위의 코드에서는 cast()라는 함수를 정의하고 있습니다. 이 함수는 reified 키워드를 사용하여 실제 타입을 가져올 수 있게 해줍니다. 함수 내부에서 this is T를 사용하여 현재 객체가 타입 T와 호환되는지 확인한 후, 호환되는 경우 형변환을 수행하고 그렇지 않은 경우 null을 반환합니다.

함수 사용하기

제네릭 타입 변환 함수를 사용하는 예제를 살펴보겠습니다.

val obj: Any? = "Hello, World!"
val str: String? = obj.cast()

println(str) // "Hello, World!"

val num: Int? = obj.cast()

println(num) // null

위의 예제에서는 obj 변수에 "Hello, World!"라는 문자열을 할당한 후, cast() 함수를 사용하여 타입을 변환하고 있습니다. cast() 함수는 호환되는 타입인 String으로 타입 변환을 수행한 후 str 변수에 할당됩니다. 마찬가지로 Int로의 타입 변환은 실패하게 되므로 num 변수에는 null이 할당됩니다.

결론

코틀린에서 제네릭 타입 변환 함수를 작성하고 사용하는 방법을 알아보았습니다. 제네릭 타입 변환 함수를 사용하면 코드의 유연성과 안정성을 높일 수 있으며, 타입 변환이 필요한 경우에 유용하게 활용할 수 있습니다.

참고 자료