我已经创建了一个数据类
data class Something (
val a : String,
val b : Object,
val c : String
)
在我的程序后面,我需要这个数据类的字符串表示,我试图扩展 toString
方法。
override fun Something.toString() : String = a + b.result() + c
这里的问题是,它不允许扩展(覆盖)toString
函数,因为它不适用于顶级函数。
如何正确覆盖/扩展自定义数据类的 toString 方法?
最佳答案
添加 .toString()
扩展函数不起作用,因为:
fun Something.toString() = ...
,那么s.toString()
不会被解析到它,因为对应的成员继承了从 Any
获胜。但在您的情况下,没有什么能阻止您在 Something
类主体中覆盖 toString
,因为 data
类可以像常规类一样具有主体:
data class Something(
val a: String,
val b: Any,
val c: String
) {
override fun toString(): String = a + b + c
}
https://stackoverflow.com/questions/35970957/