Kotlin / lateinit var /늦은 초기화 기법

2022. 4. 30. 22:25Kotlin

Kotlin / lateinit var /늦은 초기화 기법


kotlin에서 val는 상수를 정의할 때 사용한다. 

  • 상수는 String같은 기본 자료형으로 사용이 가능하고 절대 변경할 수 없는 값(그렇다고 절대로 변경못하는 건 아니다)
  • 클래스의 속성이나 함수의 지역 변수로는 사용이 불가능

 

그러다 lateinit var가 등장했다. 알쏭달쏭한 코딩의 세계...

 

val처럼 정의해놓고 코딩을 시작한다면 쉽겠지만 변수의 첫 상태를 정의하기 어려울 때가 있다고 한다.

val a = 객체처리 이게 어렵다면?

특히나 코틀린은 null 사용을 싫어해서 val a= null을 지양한다고 한다.

 

 


그때 사용하는 게 lateinit val

 

 

그래서 변수 값을 "나중에 초기화할께요!"라고 명시하는 게 latieint val이다. 

 

fun main() {
    lateinit var text: String

 
    val result1 = 30

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

  
    val result2 = 50

    text = "Result : ${result1 + result2}"
    println(text)
}
lateinit var text: String

위 코드는 "해로"님의 블로그에서 퍼왔다.

 

[Kotlin] 🤚🏻 lateinit vs lazy, 정확히 아세요?

조금이라도 헷갈린다면 들어오세요!

velog.io

특징을 살펴보면 

1. 먼저 lateinit var로 변수처리하고자 하는 것의 형태만 지정 

lateinit var text: String

2. 그 다음 val로 변수의 값을 지정

val result1 = 30

3. 변수 값에 수정이 필요하다면 다시 변수 값도 지정해 줄 수 있다. 

val result2 = 50

 

그렇다면 지금 공부하고 있는 코디에서 lateinit var의 변수값은 또 바뀔 수 있다는 가능성을 알 수 있다. 

 


참고

 

 

[Kotlin] 🤚🏻 lateinit vs lazy, 정확히 아세요?

조금이라도 헷갈린다면 들어오세요!

velog.io

 

 

[Kotlin] 변수의 고급 기술(상수, lateinit, lazy) 설명 & 예제

기존의 var , val의 차이는 알고 있다 ( 할당된 객체를 바꿀 수 있는 지의 유무) 그러나 val에서 객내 내부의 속성을 변경 할 수 없는 것은 아니다 그러나 상수는 절대 변경 할 수 없다 상수 절대 변

hkoonsdiary.tistory.com

 

 

kotlin lateinit, lazy by

자바에서 흔히 보게 되는 NullPointerException 문제를 예방하고자 코틀린에서는 변수 선언에서부터 Nullable 변수의 선언부터 엄격하게 관리한다. 변수를 선언 할 때도 Nullable인지 아닌지를 구분해야하

selfish-developer.com