Ik heb een gegevensklasse gemaakt
data class Something (
val a : String,
val b : Object,
val c : String
)
zoals later in mijn programma, heb ik de tekenreeksweergave van deze gegevensklasse nodig. Ik heb geprobeerd de methode toString
uit te breiden.
override fun Something.toString() : String = a + b.result() + c
Het probleem hier is dat het niet is toegestaan om de functie toString
uit te breiden (te negeren), omdat het niet van toepassing is op functies op het hoogste niveau.
Hoe kan ik de toString-methode van een aangepaste dataklasse op de juiste manier overschrijven/uitbreiden?
Antwoord 1, autoriteit 100%
In Kotlin kunnen extensiefuncties lidfuncties niet overschrijven, bovendien ze zijn dat wel statisch opgelost. Het houdt in dat als je een extensiefunctie fun Something.toString() = ...
schrijft, s.toString()
er niet naar wordt omgezet, omdat lid wint altijd.
Maar in jouw geval weerhoudt niets je ervan toString
binnen de Something
body van de klasse te overschrijven, omdat data
-klassen lichamen kunnen hebben, net als gewone klassen :
data class Something(
val a: String,
val b: Any,
val c: String
) {
override fun toString(): String = a + b + c
}