gpt4 book ai didi

kotlin - 如何使用 toString 扩展数据类

转载 作者:IT老高 更新时间:2023-10-28 13:28:08 28 4
gpt4 key购买 nike

我已经创建了一个数据类

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() 扩展函数不起作用,因为:

  • 扩展函数不能参与虚拟调用(they are resolved statically)。换句话说,扩展不能覆盖成员函数。
  • 如果有匹配的成员函数,则优先于扩展。如果你添加一个扩展函数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
}

关于kotlin - 如何使用 toString 扩展数据类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970957/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com