본문 바로가기
개발

Kotlin에서 lateinit property has not been initialized 오류 해결 방법

by 농담곰이 2023. 5. 9.
반응형

Kotlin에서 `lateinit` 키워드를 사용하여 프로퍼티를 선언하면, 해당 프로퍼티가 사용되기 전에 초기화해야 합니다. 초기화되지 않은 `lateinit` 프로퍼티를 사용하면 `lateinit property has not been initialized` 오류가 발생합니다. 이 오류를 해결하는 방법은 다음과 같습니다.

1. `lateinit` 프로퍼티를 초기화합니다.

`lateinit` 프로퍼티를 사용하기 전에 반드시 초기화해야 합니다. 초기화 방법은 프로퍼티를 선언할 때 `null`로 초기화하고, 사용하기 전에 값을 할당하는 것입니다. 예를 들어, 다음과 같이 프로퍼티를 선언하고 초기화할 수 있습니다.

```kotlin
lateinit var myString: String

fun initMyString() {
    myString = "Hello, World!"
}

fun useMyString() {
    if (::myString.isInitialized) {
        println(myString)
    } else {
        println("myString has not been initialized yet")
    }
}
```

위의 코드에서 `myString` 프로퍼티를 선언하고, `initMyString()` 함수에서 값을 할당합니다. `useMyString()` 함수에서 `myString` 프로퍼티가 초기화되었는지 확인합니다.

2. `lateinit` 대신 `nullable` 프로퍼티를 사용합니다.

`lateinit` 프로퍼티를 사용하는 대신 `nullable` 프로퍼티를 사용하면 초기화할 필요가 없습니다. 대신 `null` 값이 허용됩니다. 예를 들어, 다음과 같이 프로퍼티를 선언할 수 있습니다.

```kotlin
var myString: String? = null

fun initMyString() {
    myString = "Hello, World!"
}

fun useMyString() {
    if (myString != null) {
        println(myString)
    } else {
        println("myString is null")
    }
}
```

위의 코드에서 `myString` 프로퍼티를 선언하고 `initMyString()` 함수에서 값을 할당합니다. `useMyString()` 함수에서 `myString` 프로퍼티가 `null`인지 확인합니다.


위의 두 가지 방법 중 하나를 사용하여 `lateinit property has not been initialized` 오류를 해결할 수 있습니다.

반응형

댓글