[kotlin] 코틀린에서 제네릭을 사용하여 코드의 재사용성을 높이는 방법은 어떻게 되는가?

제네릭 클래스 정의

제네릭 클래스는 일반적인 형태로 다음과 같이 정의됩니다.

class Box<T>(val content: T) {
    // ...
}

T는 제네릭 타입 매개변수로, 어떤 타입이든 사용될 수 있습니다. 이제 Box 클래스는 어떤 타입이든 포함할 수 있는 상자로 재사용할 수 있습니다.

제네릭 함수 정의

함수에서도 제네릭을 활용할 수 있습니다.

fun <T> printItem(item: T) {
    println(item)
}

위의 printItem 함수는 어떤 타입(T)의 item이든 받아들여 출력할 수 있습니다.

제네릭 제약

때로는 제네릭 타입에 제약을 두어야 할 때도 있습니다. 이때 where 절을 사용하여 특정 타입에 제약을 둘 수 있습니다.

fun <T : Number> convertToString(value: T): String {
    return value.toString()
}

이 예시에서 TNumber 클래스 또는 그 하위 클래스만 인자로 받을 수 있습니다.

제네릭을 적절히 활용하면, 코드의 재사용성을 높일 수 있으며, 타입 안정성을 확보하면서 다양한 타입에 대해 유연하게 대응할 수 있습니다.

이상으로 코틀린에서 제네릭을 사용하여 코드의 재사용성을 높이는 방법에 대해 알아보았습니다.