KDY

by lazy 와 lateinit의 차이 본문

Kotlin

by lazy 와 lateinit의 차이

daeyeong 2022. 11. 1. 11:41

안녕하세요.

이번에 포스팅할 내용은 많이들 사용하시는 by lazy 와 lateinit의 차이점에 대해 포스팅 할 것 입니다.

 

가장큰 차이점은 

var 에서만 사용 가능한 late init

val 에서만 사용 가능한 by lazy 입니다.

위 차이점에서 알 수있듯 가장큰 차이점은 lateinit은 값을 언제나 바꿀수 있고 by lazy는 값을 변경할 수 없습니다.

lateInit

private lateinit var name : String

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if(::name.isInitialized){
        // 초기화 되었을때만 출력
            println("저는 $name 입니다.")
        }
    }

만약 lateinit property has not been initialized 이런 오류가 난다면 lateinit 변수를 초기화 하지 않아 나는 오류 이므로 초기화를 시켜주면 오류가 해결됩니다!

lazy

private val name : String by lazy {
 println("초기화 성공!")	
 "김대영"
} 

println($name)

//결과 값 
// 초기화 성공!
// 김대영

lazy 초기화는 기존 val 변수 선언에 by lazy를 추가함으로 lazy {}에 생성과 동시에 값을 초기화 하는 방법을 사용합니다.

 

 

 

 

 

 

 

'Kotlin' 카테고리의 다른 글

InterFace란?  (0) 2022.04.26
Kotlin IntArray  (0) 2022.04.11