If you have a few years of experience with the Kotlin language and server-side development, and you’re interested in sharing that experience with the community, have a look at our Contribution Guidelines.
Checking Whether a lateinit var Is Initialized in Kotlin
Last modified: November 24, 2020
1. Overview
In Kotlin, there are a few different approaches to lazy-initialize or even late-initialize variables and properties.
In this quick tutorial, we’re going to learn to check the initialization status of a lateinit variable.
2. Late Initialization
Using lateinit variables, we can defer a variable’s initialization. This is especially useful while working with dependency injection or testing frameworks.
Despite being useful, there is one big caveat while using them: if we access an uninitialized lateinit variable, Kotlin throws an exception:
private lateinit var answer: String
@Test(expected = UninitializedPropertyAccessException::class)
fun givenLateInit_WhenNotInitialized_ShouldThrowAnException() {
answer.length
}
The UninitializedPropertyAccessException exception signals the fact that the underlying variable is not initialized yet.
In order to check the initialization status, we can use the isInitialized method on the property reference:
assertFalse { this::answer.isInitialized }
Here, with the :: syntax, we get a reference to the property. This obviously returns true when we assign something to the variable:
answer = "42"
assertTrue { this::answer.isInitialized }
Please note that this feature is only available on Kotlin 1.2 or newer versions.
3. Conclusion
In this tutorial, we saw how to check the initialization status of a lateinit variable.
As usual, the sample codes are available over on GitHub.