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

时间:2017-11-23 12:10:25

标签: java kotlin lombok

在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或者某些第三方解决方案中是否有任何简写语法?

1 个答案:

答案 0 :(得分:0)

如果您允许Apache Commons Lang,则可以使用允许此内容的ToStringBuilder

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

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

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

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

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