Ale*_*dar 35 kotlin kotlin-extension data-class
我创建了一个数据类
data class Something (
val a : String,
val b : Object,
val c : String
)
Run Code Online (Sandbox Code Playgroud)
在我的程序中稍后我需要这个数据类的字符串表示我试图扩展toString方法.
override fun Something.toString() : String = a + b.result() + c
Run Code Online (Sandbox Code Playgroud)
这里的问题是,它不允许扩展(覆盖)toString功能,因为它不适用于顶级功能.
如何正确覆盖/扩展自定义数据类的toString方法?
hot*_*key 61
在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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11817 次 |
| 最近记录: |