Sintaxis abreviada para generar el método toString () en Kotlin (para classs que no son de datos)
En Kotlin, es posible generar el método toString()
para las classs de datos:
data class Foo(...)
Pero existen algunas limitaciones en el uso de classs de datos, además el comstackdor de Kotlin genera methods adicionales, que no quiero tener en mi código.
- ¿Kotlin no ve los accesorios de Java Lombok?
- Pelusa se bloquea en una class de Java leyendo un object Kotlin
- Cómo usar lombok con Kapt3
- ¿Es posible usar Lombok con Kotlin?
- Soporte de macros en herramientas
En Java, puede generar el método toString()
con Lombok simplemente agregando una línea de código con la anotación @ToString
:
@ToString public class Foo { ... }
Desafortunadamente, Lombok no funciona con Kotlin, así que tengo que implementar el método toString()
manualmente cada vez:
class Foo { ... override fun toString(): String { // bunch of code here } }
¿Hay alguna syntax abreviada para esto en Kotlin o quizás alguna solución de terceros?
Si permite Apache Commons Lang , puede usar ToStringBuilder que permite esto:
override fun toString() = ToStringBuilder(this) .append("field1", field1) .append("field2", field2) .toString()
o, a costa de cierta velocidad, una solución reflexiva más corta:
override fun toString() = ToStringBuilder.reflectionToString(this)
El formatting se puede cambiar pasando un ToStringStyle
diferente al constructor.
No creo que Kotlin tenga ningún apoyo para esto.