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?