Null safety란 코틀린에서 null 값을 다룰 때 발생하는 오류를 줄이고 안정적인 코드를 작성하기 위한 기능입니다.
코틀린에서는 기본적으로 null 값을 허용하지 않으며, null 값을 다루기 위해서는 nullable 타입을 사용해야 합니다. nullable 타입은 해당 변수에 null 값을 할당할 수 있도록 해줍니다.
하지만 nullable 타입을 사용할 경우, null 값을 처리하지 않고 그대로 사용하면 NullPointerException이 발생할 수 있습니다. 이를 방지하기 위해 코틀린에서는 안전한 호출(Safe call) 연산자인 ?.와 엘비스 연산자(?:)를 제공합니다.
?. 연산자는 해당 변수가 null이 아닐 때만 호출하고, null일 경우 null을 반환합니다. 엘비스 연산자(?:)는 해당 변수가 null일 경우 대체값을 반환합니다.
또한 코틀린에서는 null 체크를 강제하는 Non-null 타입을 제공합니다. 이를 사용하면 해당 변수에 null 값을 할당할 수 없어 NullPointerException을 방지할 수 있습니다.
이러한 null safety 기능을 적절히 활용하면 안정적이고 오류가 적은 코드를 작성할 수 있습니다.
var nullable: String? //타입 다음에 물음표를 붙여 null 값을 입력할 수 있다.
nullable = null
var notNullable = String
notNullable = null //일반 변수엔 Null을 입력할 수 없습니다.
fun printLength(str: String?) {
println(str?.length ?: "null")
}
fun main() {
val str: String? = null
printLength(str)
}
위 코드는 printLength
함수를 정의하고, main
함수에서 printLength
함수를 호출하는 코드입니다.
printLength
함수는 nullable한 String
타입의 매개변수 str
을 받아 해당 문자열의 길이를 출력합니다. 이 때, str?.length
와 같이 안전한 호출 연산자 ?.
를 사용하여 str
이 null일 경우 null
을 반환하도록 합니다. 또한, ?:
연산자를 사용하여 str?.length
가 null일 경우 대체값인 "null"
을 반환하도록 합니다.
main
함수에서는 nullable한 String
타입의 변수 str
을 null로 초기화하고, printLength
함수를 호출합니다. 이 때, printLength
함수에서 안전한 호출 연산자와 엘비스 연산자를 사용하여 str
이 null일 경우 "null"
을 출력합니다.
함수의 리턴타입에 물음표를 붙여서 null 허용 여부를 설정 할 수 있습니다.
fun nullReturn(): String?{
reutn null
}
안전한 호출 연산자인 ?.은 해당 변수가 null이 아닐 때만 호출하고, null일 경우 null을 반환합니다. 또한, 엘비스 연산자(?:)는 해당 변수가 null일 경우 대체값을 반환합니다.
var nullable: String? //타입 다음에 물음표를 붙여 null 값을 입력할 수 있다.
nullable = null
var notNullable = String
notNullable = null //일반 변수엔 Null을 입력할 수 없습니다.
fun printLength(str: String?) {
println(str?.length ?: "null")
}
fun nullReturn(): String?{
return null
}
위 코드는 nullable한 String
타입의 변수 nullable
을 선언하고, null 값을 할당하는 코드입니다. 또한, 일반적인 String
타입의 변수 notNullable
은 null 값을 할당할 수 없습니다.
printLength
함수는 nullable한 String
타입의 매개변수 str
을 받아 해당 문자열의 길이를 출력합니다. 이 때, str?.length
와 같이 안전한 호출 연산자 ?.
를 사용하여 str
이 null일 경우 null
을 반환하도록 합니다. 또한, ?:
연산자를 사용하여 str?.length
가 null일 경우 대체값인 "null"
을 반환하도록 합니다.
nullReturn
함수는 nullable한 String
타입의 값을 리턴하며, 이를 통해 null 값을 리턴할 수 있음을 보여줍니다.