본문 바로가기
언어/Kotlin

코틀린 지연 초기화

by 김어찐 2022. 5. 24.
728x90
package lazyinit

fun main() {
    val obj = TestClass1()
    println("obj.a1 = ${obj.a1}")
    println("obj.a2 = ${obj.a2}")
    obj.testMethod1()
    println("obj.a3 = ${obj.a3}")
    println("obj.a4 = ${obj.a4}")
}

class TestClass1 {
    var a1:Int = 100
    var a2:Int
    
    // 선언시 초기화를 하지 않아도 됨
    // primitive 타입은 지원 X
    // val 선언 x
    lateinit var a3:String

    //4를 사용을 할때 초기화
    val a4:String by lazy {
        println("a4 init")
        "문자열2"
    }

    init {
        a2 = 200
    }

    fun testMethod1() {

        if (::a3.isInitialized == false) {
            a3 = "문자열"
        }
        println("a3 = ${a3}")
    }
}
728x90

'언어 > Kotlin' 카테고리의 다른 글

코틀린 DataClass  (0) 2022.05.25
코틀린 Companion  (0) 2022.05.24
코틀린 property  (0) 2022.05.24
코틀린 상속  (0) 2022.05.24
코틀린 생성자  (0) 2022.05.24