안드로이드(Kotlin)
Android(Kotlin) null(?), lateinit, lazy
SourceTree
2021. 11. 20. 09:05
반응형
null(?)
- 코틀린에서 null 값을 허용하기위해 자료형 오른쪽에 ? 기호를 붙여주면 null값을 허용함.
- !! : null허용 자료형을 허용하지 않는 자료형에 넣을때 사용
val a: String //에러! 초기화를 해줘야합
val b: String = null //에러! 코틀린은 기본적으로 null을 허용하지 않음.
val c: String? = null //OK
//!! : null허용 자료형을 허용하지 않는 자료형에 넣을때 사용
val name: String? = "Joy"
val name2: String? = name //OK
val name3: String = name //ERROR
val name4: String = name!! //OK
//안전한 호출(?)
val str: String? = null
var upperCase = if (str != null) str else null //null
upperCase = str?.toUpperCase() //null
//엘비스 연산자(?:)
upperCase = str?.toUpperCase() ?: "str이 null입니다"
lateinit
- 먼저 선언하고 뒤에 초기화를 하겠다고 선언
- var 변수만 가능, null 초기화 되지않음, 초기화전에 사용 못함
- Int, Long, Double, Float 에서 사용불가
lateinit var str: String
str = "Hi Joy"
println(str)
lazy
- String자료형을 첫회 사용시 초기화루틴 진입
val str: String by lazy {
println("초기화")
"Hi Joy" //
}
println(str) // 초기화, Hi Joy
println(str) // Hi Joy
반응형