!! (Not null type)
강제로 not null로 바꿔줌
여기서 null을 넣으면 Null Point Exception 발생
fun ignoreNulls(s: String?) {
    val sNotNull: String = s!!
    println(sNotNull.length)
}
!!.
cascading해서 사용 가능
단점: 어디서 Null Point Exception 발생했는지 알 수 없음 → 사용 줄이기!!
person.company!!.address!!.country
? (Nullable)
null이 될 수 있음을 알려줌
nullable한 변수에서 method를 호출하면 컴파일 에러 발생
val s: String? = null
println(s.length)
/**
 * error
 * Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
 */
?. (Null Safe Operator)
null을 안전하게 처리하기 위해
?.연산자 지원다음 예제에서 s가 null이면
null반환, 아닐때만 오른쪽 함수 실행property 접근시에도 편리하게
?.를 사용해서 null 처리 가능
val employ = employee.manager?.name
fun printAllCaps(s: String?) {
    val allCaps: String? = s?.toUpperCase()
    println(allCaps)
}
?: (Elvis Operator)
null인 경우 default값을 줌
fun getName(str: String?) {
    val name = str ?: "Unknown"
    //if (str != null) str else "Unknown"과 동일
}
let function
not null인 경우에만 지정된 구문 실행
fun sendEmailTo(email: String) {
    println("Sending email to $email")
}
fun main(args: Array) {
    var email: String? = "yole@example.com"
    email?.let { sendEmailTo(it) }
    email = null
    email?.let { sendEmailTo(it) }
}
Rereference
[Kotlin] 코틀린 null 처리 - ? ?. ?: !!, let, lateinit, 제너릭, 플랫폼 타입
 1jeongg
                        
						 1jeongg