Situation:
I have a class with lateinit
fields, so they are not present in the constructor:
class ConfirmRequest() { lateinit var playerId: String }
I'd like to have a toString()
method with all fields and don't want to write it manually, to avoid boiler print. In Java I'd use the Lombok @ToString
annotation for this problem.
Question:
Is there any way to implement it in Kotlin?
This is how every class has a toString() method: since Object has a toString() method, then 'children' of Object inherit a toString() method, the children of children of Object inherit a toString() method, and so on. So every class 'automatically' gets a toString() method by inheritance.
The toString method is implemented by default in the class Object (docs.oracle.com/javase/7/docs/api/java/lang/…). This method is not abstract so you don't have to override it. You can if you want to change the string representation of you object.
The recommended way is to write toString
manually (or generate by IDE) and hope that you don't have too many of such classes.
The purpose of data class
is to accommodate the most common cases of 85%, which leaves 15% to other solutions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With