Kotlin 中的对象和数据对象

2024-03-12

我在 Sealed 类中编写了这 3 个游戏状态:

sealed class Status {

   object Idle:Status()
    object Active:Status()
    object GameOver:Status()
}

IDE 没有任何地方建议我应该使用data object而不是旧的好object.

问题是我从来没听说过data object。我环顾四周,没有找到与“数据对象”相关的可靠解释。例如,这个2015年答案 https://stackoverflow.com/a/32295251/7839518表明这是一个错误!

我正在寻找你的想法数据对象及其用途


我最终找到了一些可靠的信息数据对象来自Kotlin 文档 https://kotlinlang.org/docs/object-declarations.html#data-objects

当你在一个普通对象前面加上data modifier您只需向普通对象添加一些类似于数据类的功能即可。例如一个toString()会自动为您生成,以便您打印时data object您无需使用人类可读的类名称即可获得@address.

该文档确实建议使用data objects与密封类中的数据类一起使用。

数据对象声明对于密封特别有用 层次结构,如密封类或密封接口,因为它们 允许您与您可能拥有的任何数据类保持对称 与对象一起定义:

总之添加data修饰符增强了一个普通对象toString(), equals()/hashCode() pair在引擎盖下。增强后的对象将与Data Classes在密封的类层次结构中。

NB- 与数据类不同,数据对象没有copy() - 对象是具有一个实例的单例 - and componentN() - 对象没有属性并且不能被解构 -功能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin 中的对象和数据对象 的相关文章

随机推荐