Kotlin/포스팅

코틀린 제네릭 선언

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

코틀린에서 제네릭을 선언하는 방법은 주로 클래스, 인터페이스, 함수 등을 정의할 때 사용됩니다. 제네릭은 코드의 재사용성과 타입 안정성을 높이기 위한 강력한 기능입니다. 이를 위해 타입 파라미터를 사용하여 일반적인 형식으로 코드를 작성할 수 있습니다.

 

1. 클래스에서의 제네릭 선언

클래스에서 제네릭을 선언하는 방법은 다음과 같습니다.

class Box<T>(val item: T) {
    // 클래스 내용
}

위의 예제에서 Box 클래스는 T라는 타입 파라미터를 가지고 있습니다. 이 클래스는 나중에 생성할 때 실제 타입으로 대체됩니다.

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

 

2. 함수에서의 제네릭 선언

함수에서도 제네릭을 선언할 수 있습니다.

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

위의 예제에서 printItem 함수는 어떤 타입의 인자든 받을 수 있도록 제네릭으로 선언되었습니다.

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

 

3. 인터페이스에서의 제네릭 선언

인터페이스에서도 제네릭을 사용할 수 있습니다.

interface ListContainer<T> {
    fun addItem(item: T)
    fun getItem(index: Int): T
}

위의 예제에서 ListContainer 인터페이스는 T라는 타입 파라미터를 가지고 있습니다. 구현체에서 실제 타입으로 대체됩니다.

 

4. 제약된 제네릭 선언

타입 파라미터에 제약을 설정하여 특정 타입이나 인터페이스의 하위 타입만을 허용할 수 있습니다.

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

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

 

5. 변성에 대한 제네릭 선언

변성은 제네릭 타입이 서브 타이핑 관계를 어떻게 유지할지를 결정합니다. 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