generic example data kotlin kotlin-extension data-class

kotlin - example - Cómo extender una clase de datos con toString



object class kotlin (1)

En Kotlin, las funciones de extensión no pueden anular las funciones miembro, además, se resuelven de forma estática . Implica que si escribe una función de extensión fun Something.toString() = ... , s.toString() no se resolverá, porque el miembro siempre gana .

Pero en su caso, nada le impide anular toString dentro del cuerpo de la clase Something , porque data clases de data pueden tener cuerpos como las clases regulares:

data class Something( val a: String, val b: Any, val c: String ) { override fun toString(): String = a + b + c }

He creado una dataclass

data class Something ( val a : String, val b : Object, val c : String )

como más adelante en mi programa necesito la representación de cadena de esta clase de datos que intenté extender el método toString.

override fun Something.toString() : String = a + b.result() + c

El problema aquí es que no permite extender (anular) la función toString, ya que no es aplicable a las funciones de nivel superior.

¿Cómo anular / ampliar correctamente el método toString de una clase de datos personalizada?