Authors Top

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.

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.

Authors Bottom

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.

Comments are closed on this article!