如何用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方法?

One Solution collect form web for “如何用toString扩展一个数据类”

在Kotlin中,扩展函数不能覆盖成员函数,而且它们是静态解析的 。 这意味着如果你写了一个扩展函数fun Something.toString() = ...s.toString()将不会被解析为它,因为成员总是赢

但在你的情况下,没有什么能阻止你重写toStringSomething类的主体中,因为data类可以像常规类一样拥有主体:

 data class Something( val a: String, val b: Any, val c: String ) { override fun toString(): String = a + b + c } 
  • 我想将我的kotlin版本添加到gradel项目中
  • Kotlin范围函数与扩展运行
  • Kotlin扩展函数突然需要api等级24
  • 需要Kotlin函数什么都不是,而是定义为一个不同的types
  • Kotlin - 延期上课
  • 如何遍历kotlin中的hasmap?
  • 转换我现有的andorid工作室项目到kotlin?
  • Kotlin:如何用扩展函数扩展enum类
  • 没有大括号的Kotlin类
  • 结果一样,但是测试用例没有通过单元测试
  • 在V1.0.1中不能识别Kotlin扩展属性
  • Kotlin language will be the best programming language for Android.