[kotlin] 제네릭 타입의 사용법

제네릭 타입은 클래스, 인터페이스, 메서드를 정의할 때 사용되는 타입 매개변수입니다. 제네릭을 사용하면 재사용성이 높고 안전한 코드를 작성할 수 있습니다.

제네릭 클래스

제네릭 클래스는 타입 매개변수를 가진 클래스로, 다음과 같이 선언합니다:

class Box<T>(val item: T) {
    fun getItem(): T {
        return item
    }
}

위의 예제에서 Box 클래스는 T라는 제네릭 타입을 가지며, item 속성과 getItem 메서드는 해당 제네릭 타입을 사용합니다.

제네릭 함수

제네릭 함수는 다음과 같이 선언할 수 있습니다:

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

위의 예제에서 <T>는 제네릭 타입을 선언하며, printItem 함수는 해당 제네릭 타입을 매개변수로 사용합니다.

제네릭 제약(Constraint)

제네릭 타입의 범위를 제한하기 위해 제네릭 제약을 사용할 수 있습니다. 예를 들어, 다음과 같이 인터페이스를 구현하는 타입만 허용하는 제네릭 클래스를 정의할 수 있습니다:

interface Printable {
    fun print()
}

class PrintBox<T : Printable>(val item: T) {
    fun printItem() {
        item.print()
    }
}

위의 예제에서 PrintBox 클래스는 T라는 제네릭 타입을 가지며, 해당 타입은 Printable 인터페이스를 구현한 타입으로 제한됩니다.

제네릭 타입을 사용하면 강력하고 안전한 코드를 작성할 수 있으며, 다양한 상황에 유용하게 활용할 수 있습니다.

참고 문헌: