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.

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.