Kotlin의 널 세이프티 방법
- 코틀린은 ?, !!, ?., ?: 로 Null 예외로부터 살아남으려고 해요
- 하지만 강제로 null이 아니라고하는 !!는 최대한 사용을 지양해주세요!
1. Nullable과 Non-nullable 타입
// Non-nullable (null을 허용하지 않음)
var nonNullable: String = "Hello, Kotlin!"
// Nullable (null을 허용함)
var nullable: String? = null
예시 코드
fun main(){
var s = Student()
s.name = "참새"
s.address = "서울"
s.displayInfo()
}
class Student {
lateinit var name:String
var address:String? = null
fun displayInfo() {
println("이름은: ${name} 입니다")
println("주소는: ${address} 입니다")
}
}
2. Safe Call Operator (?.)
- ?. 연산자를 사용하여 null 가능성이 있는 객체의 메소드나 속성에 안전하게 접근할 수 있습니다.
- 객체가 null이 아니면 메소드나 속성에 접근하고, null이면 연산 전체가 null을 리턴합니다.
var nullable: String? = null
// nullable이 null이면 length는 null
val length: Int? = nullable?.length
예시 코드
fun main(){
var s = Student()
s.name = "참새"
s.displayAddressLength()
/**
출력값
주소의 길이는: null 입니다
*/
s.address = "서울"
s.displayInfo()
/**
출력값
이름은: 참새 입니다
주소는: 서울 입니다
*/
}
class Student {
lateinit var name:String
var address:String? = null
fun displayInfo() {
println("이름은: ${name} 입니다")
println("주소는: ${address} 입니다")
}
fun displayAddressLength() {
println("주소의 길이는: ${address?.length} 입니다")
}
}