lateinit, lazy

Panda·2022년 3월 27일
0

Kotlin

목록 보기
9/10

lateinit

말그대로 늦은 초기화 입니다.

다들 그런 상황이 생길겁니다.
초기값으로 null을 지정하고 (혹은 초기화를 안해준 변수 선언)
추후에 우리가 원하는 값으로 초기화 해주고 싶다!!!

근데??? 하지만 코틀린에서는 최~~대한 null을 사용을 자제해야합니다.

그래서 lateinit이 있다!!

fun main() {
    lateinit var text : String

    val result = 30

    text = "Result : $result"
    println(text)

    val number = 50
    text = "Result : ${result + number}"
    println(text)
}

- 결과 -
Result : 30
Result : 80

보면 그냥 var 변수를 쓰는 것처럼 사용하지만
처음에 변수를 초기화 안해도 나중에 초기화를 할 수 있습니다.

그리고 나중에 초기화를 한다는 특성때문에 무조건 var 를 사용해야 합니다.

lateinit을 해줬는데 끝까지 초기화를 안하게 되면
컴파일 단계에서 오류가 발생하여 실수를 방지해주기도 합니다.

lazy

fun main() {
    lateinit var text: String

    val textLength: Int by lazy {
        text.length
    }

    // 늦은 초기화!
    text = "Hello World!"
    println(textLength)
}

- 결과 -	
12

lazy는 by lazy 로 사용할 수 있는데
초기화 당시에 초기화 못해주는 상황이지만
추후에 lazy scope 안에서 초기화 된 값을 지정해줍니다.
textLength을 호출시 이를 어떻게 초기화 해줄지 대하여 정의하는 키워드 입니다.

그리고 val 을 사용하여 선언을 할 수 있습니다!!

val 사용 가능

  • lateinit : 사용 불가능
  • lazy : 사용 가능

용도

  • lateinit : 초기화 이후에 계속하여 값이 바뀔 수 있을 때 (초기화만 늦게 이뤄지는 변수)
  • lazy : 초기화 이후에 읽기 전용 값으로 사용할 때 (초기화가 늦게 이뤄지는 고정 값)

느낀 점

생각외로 늦게 초기화 되는 변수들이 좀 있어서
ex)스프링 @Autowired 같은거
자주 쓸것 같습니다.

profile
실력있는 개발자가 되보자!

0개의 댓글

관련 채용 정보