개요
코틀린은 강력한 타입 시스템을 가지고 있으며, 제네릭 타입을 사용하여 코드의 재사용성과 안정성을 높일 수 있습니다. 제네릭 타입은 하나의 타입을 여러 다른 타입에 대해 사용할 수 있도록 도와줍니다. 그러나 때로는 제네릭 타입을 다른 타입으로 변환해야 할 때가 있을 수 있습니다. 이러한 경우에는 제네릭 타입 변환 함수를 사용할 수 있습니다.
제네릭 타입 변환 함수 작성하기
제네릭 타입 변환 함수를 작성할 때는 확장 함수 형태로 작성하는 것이 일반적입니다. 다음은 코틀린에서 제네릭 타입을 다른 타입으로 변환하는 함수를 작성하는 예제입니다.
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
이 할당됩니다.
결론
코틀린에서 제네릭 타입 변환 함수를 작성하고 사용하는 방법을 알아보았습니다. 제네릭 타입 변환 함수를 사용하면 코드의 유연성과 안정성을 높일 수 있으며, 타입 변환이 필요한 경우에 유용하게 활용할 수 있습니다.