[kotlin] 코틀린에서 제네릭을 사용하여 특정 타입의 객체를 필터링하는 방법은 어떻게 되는가?

다음은 filterIsInstance 함수를 사용하여 제네릭을 활용하여 특정 타입의 객체를 필터링하는 예시입니다.

val mixedList: List<Any> = listOf("Kotlin", 1, "Java", 2, "Python", 3)

val stringOnlyList: List<String> = mixedList.filterIsInstance<String>()
println(stringOnlyList) // 출력: [Kotlin, Java, Python]

위 예시에서는 mixedList에 포함된 여러 타입의 객체 중에서 String 타입의 객체만을 필터링하여 stringOnlyList에 저장하였습니다.

추가로, 사용자가 직접 필터링 로직을 작성하여 제네릭을 활용하여 특정 타입의 객체를 필터링하는 방법 또한 가능합니다.

inline fun <reified T> filterItemsByType(items: List<Any>): List<T> {
    return items.filterIsInstance<T>()
}

val stringOnlyList: List<String> = filterItemsByType(mixedList)
println(stringOnlyList) // 출력: [Kotlin, Java, Python]

위의 예시에서는 filterItemsByType 함수를 정의하여 제네릭을 이용하여 임의의 타입 T에 대한 필터링 로직을 사용할 수 있도록 하였습니다.

코틀린에서 제네릭을 사용하여 특정 타입의 객체를 필터링하는 방법은 다양하고 유연하며, 개발자의 편의에 따라 다양한 방식으로 활용할 수 있는 것이 장점입니다.