[kotlin] 코틀린에서 제네릭 타입의 인스턴스를 생성하는 방법은 어떻게 되는가?

우선, 제네릭 타입의 클래스를 생성하는 방법은 다음과 같습니다:

class Box<T>(val value: T)

val intBox = Box<Int>(10) // Int 타입의 Box 인스턴스 생성
val stringBox = Box<String>("Hello") // String 타입의 Box 인스턴스 생성

위의 예제에서 Box 클래스는 제네릭 타입 T를 받는데, 이 T는 객체의 타입을 나타냅니다. Box 클래스를 생성할 때 <T>와 같이 꺽쇠 괄호 안에 원하는 타입을 지정하여 인스턴스를 생성합니다.

함수에서 제네릭 타입을 사용하는 예제는 다음과 같습니다:

fun <T> singletonList(item: T): List<T> {
    return listOf(item)
}

val list = singletonList<String>("Hello") // String 타입의 원소를 가지는 List 생성

함수 singletonList는 제네릭 타입 T를 받는데, 함수를 호출할 때 <T>와 같이 함수명과 제네릭 타입을 지정하여 사용합니다.

이와 같이 코틀린에서는 제네릭을 사용하여 다양한 타입의 객체를 다룰 수 있고, 제네릭 타입의 인스턴스를 생성하는 방법을 살펴보았습니다.