[kotlin] 코틀린에서 제네릭과 널 안전성을 함께 사용하는 방법은 어떻게 되는가?
코틀린은 강력한 널 안전성을 제공하는 언어입니다. 제네릭과 널 안전성을 함께 사용하는 방법에 대해 알아보겠습니다.
1. 제네릭 클래스 선언
널 안전성과 제네릭을 함께 사용하려면, 클래스나 함수를 선언할 때 제네릭 타입 매개변수를 널 가능한 타입으로 선언해야 합니다.
class Box<T : Any?> {
// ...
}
위의 예제에서 T : Any?
는 T
가 널이 될 수 있는 타입이라는 것을 나타냅니다.
2. 널 가능성 처리
제네릭으로 선언된 타입을 사용할 때는 타입이 널일 수 있는지에 대한 처리를 해주어야 합니다. 일반적으로 null
체크를 수행하여 널일 때와 널이 아닐 때의 로직을 처리합니다.
fun <T : Any> printValue(item: T?) {
if (item != null) {
println(item.toString())
} else {
println("Value is null")
}
}
위의 예제에서 T
에 대한 널 체크를 수행하여 안전하게 값을 처리하고 있습니다.
3. 널 안전성 연산자(?.
)의 활용
코틀린은 널 안전성을 위해 ?.
연산자를 제공합니다. 이를 활용하여 제네릭으로 선언된 객체의 메서드나 프로퍼티에 접근할 때 널 처리를 간편하게 수행할 수 있습니다.
val length: Int? = text?.length
위의 예제에서는 text
가 널이 아닐 경우에만 length
에 접근하여 안전하게 처리하고 있습니다.
요약
코틀린에서 제네릭과 널 안전성을 함께 사용하기 위해서는 제네릭 타입 매개변수를 널이 될 수 있는 타입으로 정의하고, 널 가능성을 처리하는 로직에서는 널 체크를 수행하여 안전하게 코드를 작성해야 합니다.
이렇게 함으로써, 코틀린의 강력한 널 안전성과 제네릭의 유연성을 함께 활용할 수 있습니다.
참고: Kotlin 공식 문서