Kotlin
toString
Learn automatic toString generation.
Automatic toString generation
Data classes generate the toString method automatically. It produces a readable form with the class name and property values.
Example: data class Book(val title: String, val author: String). Calling println(Book("Kotlin", "JetBrains")) outputs Book(title=Kotlin, author=JetBrains). In normal classes without an override, toString prints a memory address; data classes avoid this. It is ideal for debugging and logging.
The toString format
The toString format of data classes is ClassName(prop1=value1, prop2=value2). Property names and values are connected with =.
Example: data class Money(val amount: Double, val currency: String). Money(100.0, "USD").toString() returns Money(amount=100.0, currency=USD). Because println calls toString automatically, println(m) and println(m.toString()) produce the same output.
Exercise toString with the Book data class
Define a data class named Book with a primary constructor taking val title: String, val author: String. In main create a Book("Kotlin", "JetBrains") instance. First print the result of b.toString(), then print b directly with println.
Show example solution
data class Book(val title: String, val author: String)
fun main() {
val b = Book("Kotlin", "JetBrains")
println(b.toString())
println(b)
}
Test yourself
-
Complete the toString call
data class Book(val title: String, val author: String)
val b = Book("Kotlin", "JetBrains")
println(b.____())
Show answer
data class Book(val title: String, val author: String)
val b = Book("Kotlin", "JetBrains")
println(b.toString())
-
Match the toString parts
- Book
- Class name
- title=Kotlin
- Property and value
- ,
- Separator
- println(b)
- Automatic toString
-
<code>data class Book(val title: String, val author: String)</code> is defined. What does <code>println(Book("Kotlin", "JetBrains"))</code> print?
- Book(title=Kotlin, author=JetBrains)
- Book@1a2b3c
- Kotlin - JetBrains
- Book
Show answer
Book(title=Kotlin, author=JetBrains) — A data class toString shows the class name and property-value pairs.
Next lesson: Destructuring