[kotlin] 코틀린(Kotlin) 제네릭(Generic)
코틀린에서 제네릭을 사용하면 타입을 파라미터로 받아들일 수 있는 클래스, 함수, 인터페이스를 작성할 수 있습니다. 이로써 코드의 재사용성과 안정성을 향상시킬 수 있습니다. 코틀린의 제네릭은 자바의 제네릭과 매우 유사하지만, 몇 가지 차이점이 있습니다. 제네릭을 사용하여 어떻게 클래스와 함수를 작성하는지 알아보겠습니다.
클래스에서의 제네릭 사용
클래스에서 제네릭을 사용하려면 클래스 이름 뒤에 꺽쇠 괄호(< >
) 안에 제네릭 파라미터를 선언합니다. 예를 들어, 다음은 Box
클래스를 제네릭으로 작성하는 예제입니다.
class Box<T>(val item: T) {
fun getItem(): T {
return item
}
}
위의 코드에서 T
는 어떤 타입이든 될 수 있는 제네릭 파라미터를 나타냅니다.
함수에서의 제네릭 사용
함수에서도 제네릭을 사용할 수 있습니다. 아래 예제는 제네릭을 사용하여 두 요소를 교환하는 함수를 보여줍니다.
fun <T> swap(list: MutableList<T>, index1: Int, index2: Int) {
val temp = list[index1]
list[index1] = list[index2]
list[index2] = temp
}
위의 예제에서 <T>
는 함수의 제네릭 파라미터를 나타냅니다.
제네릭 제약(Constraints)
제네릭 파라미터에 대한 제약을 걸고 싶을 때는, 콜론 뒤에 타입으로 제약을 걸어줄 수 있습니다.
fun <T : Number> convertAndPrint(value: T) {
val result = value.toInt()
println(result)
}
위의 코드에서 T : Number
는 T
가 Number
클래스를 상속받는 타입이어야 한다는 제약을 나타냅니다.
요약
제네릭을 사용하면 코드의 재사용성과 타입 안정성을 향상시킬 수 있습니다. 이를 통해 컴파일 시점에 타입 안정성을 보장하고 불필요한 타입 캐스팅을 줄일 수 있습니다. 제네릭은 코틀린에서 강력한 기능이며, 적절하게 활용하면 코드의 품질을 향상시킬 수 있습니다.
더 많은 정보를 원하시면 코틀린 공식 문서를 참고하시기 바랍니다.