Kotlin Tip #33: Using By Lazy For Efficient Property Initialization— 100 Kotlin Tips in 100 Days

Raphael De Lio
Kotlin with Raphael De Lio
2 min readMar 13, 2024

--

Twitter | LinkedIn | YouTube | Instagram
Tip #32: Using Delegation to Enhance Classes Without Inheritance

Lazy initialization is a design pattern that delays the creation of an object, the calculation of a value, or some other expensive process until the first time it is needed. To optimize performance and ensure resource efficiency, Kotlin encapsulates this pattern in the by lazy delegate, which is particularly useful for properties whose initialization is costly or might not occur during an instance's lifetime.

The by lazy delegate takes a lambda expression that initializes the property. Kotlin ensures that this lambda is executed only once - the first time the property is accessed. Subsequent accesses to the property return the value computed during the initial execution, without re-invoking the lambda.

val heavyResource: HeavyResource by lazy {
println("Initializing heavy resource")
HeavyResource() // Assume this constructor does something expensive
}

In this example, heavyResource is not created at the point of the variable declaration but rather when it is first used. If your program flow never accesses heavyResource, then the expensive HeavyResource() construction never occurs, saving resources.

By understanding and applying lazy initialization, developers can ensure their Kotlin applications are not just powerful, but also resource-efficient.

I hope you have enjoyed this tip of our series! Don’t forget to subscribe and stay tuned for more Kotlin tips!

Stay curious!

Tip #34: Prefer Inline Classes for Wrapping Primitive Types

Contribute

Writing takes time and effort. I love writing and sharing knowledge, but I also have bills to pay. If you like my work, please, consider donating through Buy Me a Coffee: https://www.buymeacoffee.com/RaphaelDeLio

Or by sending me BitCoin: 1HjG7pmghg3Z8RATH4aiUWr156BGafJ6Zw

Follow Me on Social Media

Stay connected and dive deeper into the world of Kotlin with me! Follow my journey across all major social platforms for exclusive content, tips, and discussions.

Twitter | LinkedIn | YouTube | Instagram

--

--