当前位置: 首页 > 知识库问答 >
问题:

如何使用toString扩展数据类

陈瀚玥
2023-03-14

我已经创建了一个数据类

data class Something (
    val a : String,
    val b : Object,
    val c : String
)
override fun Something.toString() : String = a + b.result() + c

如何正确重写/扩展自定义DataClass的toString方法?

共有1个答案

林弘壮
2023-03-14

在Kotlin中,扩展函数不能重写成员函数,而且它们是静态解析的。这意味着如果您编写扩展函数有趣的事情。tostring()=...s.tostring()将不会解析为它,因为member总是获胜。

但是在您的示例中,没有什么可以阻止您在something类主体中重写tostring,因为data类可以像常规类一样具有主体:

data class Something(
    val a: String,
    val b: Any,
    val c: String
) {
    override fun toString(): String = a + b + c
}
 类似资料:
  • Dart 2.6引入了一个新的语言特性,叫做“静态扩展成员”。 但是,我不太明白如何使用它。 我希望轻松获取或的,即使用而不是: 我试图执行以下操作,但这是一个语法错误:

  • 如何从psql列出已安装在数据库或架构中的所有扩展? 另见 查找PostgreSQL附带的可用扩展列表

  • 问题内容: 我们正在使用SQL Server 2008,其中一项要求是在为系统定义的实体上具有可扩展的用户定义属性。例如,我们可能有一个名为Doctor的实体,我们希望系统管理员能够定义通常不在系统中的其他属性。这些属性很可能是链接父表或联接表的查询条件所必需的。 将有定义属性(名称,描述,类型)等的表,但是我的问题是实际数据值的存储。 我不是DBA(只是一个假装成程序员的DBA),但我首先想到的

  • 作者:陈希章 发表于 2018年4月7日 前言 此前我有一篇 文章 讲解了Microsoft Graph的一种数据扩展技术—— 开发扩展(Open Extensions),它可以实现在支持的对象(例如用户,组等)上面附加任意的数据。但开放扩展的问题在于,它是基于某个具体对象的,你无法确定两个对象是否具有同样的扩展(即便属性名一样,但也可能其包含的数据完全不同)。如果我们需要对一类对象进行统一的扩展

  • 作者:陈希章 发表于 2018年1月2日 前言 Microsoft Graph是一张拥有巨大价值的网络,它定义了包括Office 365在内的资源的实体及其关系,它的价值体现在,随着用户积累的数据越来越多,经过授权的应用程序可以在这些数据的基础上得到很多有价值的信息,并且帮助用户更好地完成工作。 Microsoft Graph也是Office 365从单纯的SaaS平台向PaaS平台(Office