用于在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本身对此有任何支持。