如何用toString扩展一个数据类
我已经创建了一个数据类
data class Something ( val a : String, val b : Object, val c : String )
后来在我的程序中,我需要这个数据类的字符串表示,我试图扩展toString方法。
override fun Something.toString() : String = a + b.result() + c
这里的问题是,它不允许扩展(覆盖)toString函数,因为它不适用于顶级函数。
如何正确覆盖/扩展自定义数据类的toString方法?
在Kotlin中,扩展函数不能覆盖成员函数,而且它们是静态解析的 。 这意味着如果你写了一个扩展函数fun Something.toString() = ...
, s.toString()
将不会被解析为它,因为成员总是赢 。
但在你的情况下,没有什么能阻止你重写toString
在Something
类的主体中,因为data
类可以像常规类一样拥有主体:
data class Something( val a: String, val b: Any, val c: String ) { override fun toString(): String = a + b + c }