In Kotlin, an object can only be created when it is called, otherwise no object creation
The lazy () block
fun main() {
val bookInstance1 = Book(
"Rogue Lawyer", "John Grisham", 2015
) // prints Book Rogue Lawyer class is called
val bookInstance2 by lazy {
Book(
"The Rain maker", "John Grisham", 1995
)
}
/*println(bookInstance2.getBookDetails())
println(bookInstance1.getBookDetails())*/
}
class Book(
var name: String,
var author: String,
var year: Int
) {
init {
println("Book $name class is called")
}
fun getBookDetails() {
println(
"-------------------------- \n" +
"Book Name : $name \n" +
"Author Name : $author \n" +
"Published Year :$year \n" +
"--------------------------"
)
}
}
In the above code, the bookInstance1
object is created when the object is initialized and bookInstance2
object is not created because the bookInstance2
is inside the lazy block which means bookInstance2
will be created only when bookInstance2.getBookDetails()
is called
Things to note
the lazy function takes a lambda and returns the lazy instance
It can be used only with non-null variables
val is allowed: var is not allowed
object will be initialized only once and return the same values from the cache memory
prevents unnecessary initialization of objects
Please leave your comments to improve.
Enjoy and happy coding