[KOTLIN] LATEINIT / LAZY

2022. 5. 22. 19:17·KOTLIN
728x90

LateInit

  • 변수에 객체를 할당하는 것을 선언과 동시에 하지 않고 할당하는 작업을 뒤로 미루게 해줌
  • Nullabled 하지 않는 변수를 선언하면서 할당하는 작업을 뒤로 미루고 싶을 때 사용
  • LateInit은 mutable 변수만 가능하기 때문에 var키워드 가진 변수에만 사용이 가능함

LateInit 예제

fun main() {
    val lateInit = LateInitSample()
    println(lateInit.getLateInitText())

    lateInit.text = "할당완료"
    println(lateInit.getLateInitText())
}

class LateInitSample {
    lateinit var text: String

    fun getLateInitText(): String {
        //초기화 되면 text 반환, 안될경우 기본값 반환
        if (::text.isInitialized) {
            return text
        }
        return "기본값"
    }
}
  • 변수의 초기화 여부에 따라가 값이 달라짐

Lazy

  • Lateinit하고 비슷하게 값을 지정하는 작업을 미뤄줌
  • 할당되는 시점이 변수를 호출하는 시점임
  • 코드의 실행시간을 최적화할 수 있음 (호출하는시점에 할당되기 때문)
  • immutable 변수에만 적용이 가능하기 때문에 val키워드에만 사용이 가능함

Lazy 예제

fun main() {
    val number: Int by lazy {
        println("초기화할당")
        5
    }
    println("시작")
    println(number)
    println(number)
}

//결과 시작 -> 초기화할당 -> 7 -> 7
  • 두번째 number 출력시 이미 초기화를 했기 때문에 초기화할당 구문을 실행안함
저작자표시

'KOTLIN' 카테고리의 다른 글

[KOTLIN] 코루틴  (0) 2022.06.01
[KOTLIN] NULL SAFTY / NULL 처리방법  (0) 2022.05.30
[KOTLIN] 시퀀스 (SEQUENCES)  (0) 2022.05.22
[KOTLIN] 확장함수  (0) 2022.05.22
[KOTLIN] Scope 함수  (0) 2022.05.18
'KOTLIN' 카테고리의 다른 글
  • [KOTLIN] 코루틴
  • [KOTLIN] NULL SAFTY / NULL 처리방법
  • [KOTLIN] 시퀀스 (SEQUENCES)
  • [KOTLIN] 확장함수
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    Elk
    SQL
    cleancode
    Spring
    엘라스틱서치
    JPA
    ElasticSearch
    Kafka
    java
    자바
    AWS
    클린코드
    프로그래머스
    go
    IntelliJ
    splunk
    이펙티브코틀린
    docker
    이펙티브 코틀린
    코틀린
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KOTLIN] LATEINIT / LAZY
상단으로

티스토리툴바