언어/Kotlin

코틀린 지연 초기화

김어찐 2022. 5. 24. 17:02
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
댓글수0