Kotlin
제네릭 클래스 (Generic Classes)
타입 파라미터를 사용하여 다양한 타입을 처리하는 범용 클래스를 설계합니다. 타입 제약으로 안전성을 확보합니다.
// 타입 제약이 있는 제네릭 클래스
class SortedList<T : Comparable<T>> {
private val items = mutableListOf<T>()
fun add(item: T) {
items.add(item)
items.sort()
}
fun getAll(): List<T> = items.toList()
fun min(): T? = items.firstOrNull()
fun max(): T? = items.lastOrNull()
}
// 여러 타입 파라미터
class Result<out S, out E>(
val value: S? = null,
val error: E? = null
) {
val isSuccess get() = value != null
fun <R> map(transform: (S) -> R): Result<R, E> =
if (isSuccess) Result(value = transform(value!!))
else Result(error = error)
}
fun main() {
val list = SortedList<Int>()
listOf(5, 2, 8, 1).forEach { list.add(it) }
println(list.getAll()) // [1, 2, 5, 8]
val ok: Result<String, Exception> = Result(value = "성공")
val mapped = ok.map { it.uppercase() }
println(mapped.value) // 성공
}