Kotlin/포스팅

코틀린 타입 파라미터

짜집퍼박사(짜박) 2024. 1. 2. 20:47

코틀린에서 타입 파라미터(Type Parameter)는 제네릭 프로그래밍에서 사용되는 개념으로, 함수나 클래스가 특정한 타입이나 형식에 의존하지 않고, 일반적으로 작동하도록 하는데 사용됩니다. 즉, 코드의 재사용성과 타입 안정성을 높이기 위한 도구로 활용됩니다. 타입 파라미터는 일반적으로 대문자 알파벳으로 표시되며, 함수나 클래스를 선언할 때에 사용됩니다.

 

함수에서의 타입 파라미터 사용

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

위의 예제에서 <T>는 타입 파라미터를 나타냅니다. printItem 함수는 어떤 타입의 인자든 받을 수 있도록 일반화되어 있습니다. 함수를 호출할 때마다 실제 타입으로 대체됩니다.

printItem(42)           // 출력: 42
printItem("Hello")      // 출력: Hello
printItem(3.14)         // 출력: 3.14

 

클래스에서의 타입 파라미터 사용

class Box<T>(val item: T)

위의 예제에서 Box 클래스는 타입 파라미터 T를 가지고 있습니다. 이를 통해 Box 인스턴스를 생성할 때 어떤 타입의 값을 저장할지를 나중에 지정할 수 있습니다.

val intBox = Box(42)           // Box<Int>
val stringBox = Box("Hello")   // Box<String>
val doubleBox = Box(3.14)      // Box<Double>

 

타입 파라미터 제약

타입 파라미터에 대한 제약을 설정하여 특정 타입이나 인터페이스의 하위 타입만을 허용할 수 있습니다. 이를 통해 타입 안정성을 높일 수 있습니다.

fun <T : Number> square(value: T): T {
    return value * value
}

위의 예제에서 <T : Number>는 T가 Number 타입이거나 Number의 하위 타입이어야 한다는 제약을 나타냅니다.

val intResult = square(5)       // 25
val doubleResult = square(3.14) // 9.8596
// val stringResult = square("Hello") // 오류: 제약에 위배됨

 

변성 (Variance)에 대한 타입 파라미터

타입 파라미터에 대한 변성은 타입 계층 구조 내에서 서브 타이핑 관계를 어떻게 유지할 것인지를 결정합니다. in, out, inout 키워드를 사용하여 표시할 수 있습니다. 변성에 대한 내용은 앞서 살펴본 코틀린 제네릭스 설명에 포함됩니다.

class Box<out T>(val item: T)

위의 예제에서 out 키워드는 T가 공변적이라는 것을 나타냅니다.

코틀린의 타입 파라미터는 제네릭 프로그래밍을 더 유연하게 만들어주는 강력한 도구 중 하나입니다. 타입 파라미터를 사용하여 일반적이고 유연한 코드를 작성할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 바운드와 제약  (0) 2024.01.02
코틀린 제네릭 선언  (0) 2024.01.02
코틀린 제네릭스  (0) 2024.01.02
코틀린 인터페이스 봉인  (0) 2024.01.02
코틀린 봉인된 클래스  (0) 2024.01.02