用于在Kotlin中生成toString()方法的简短语法(用于非数据类)

在Kotlin中,可以为数据类生成toString()方法:

 data class Foo(...) 

但是使用数据类有一些限制,另外Kotlin编译器会生成额外的方法,我不想在我的代码中使用这些方法。

在Java中,您可以通过添加一行代码和@ToString注释来为Lombok生成toString()方法:

 @ToString public class Foo { ... } 

不幸的是,Lombok不能和Kotlin一起工作,所以我必须每次手动实现toString()方法:

 class Foo { ... override fun toString(): String { // bunch of code here } } 

在Kotlin中有没有简写的语法,或者是一些第三方解决方案?

如果你允许Apache Commons Lang ,你可以使用ToStringBuilder ,它允许:

 override fun toString() = ToStringBuilder(this) .append("field1", field1) .append("field2", field2) .toString() 

或者以某种速度为代价,采用较短的reflection解决方案:

 override fun toString() = ToStringBuilder.reflectionToString(this) 

可以通过将不同的ToStringStyle传递给构建器来更改格式。

我不相信Kotlin本身对此有任何支持。