我在 Sealed 类中编写了这 3 个游戏状态:
sealed class Status {
object Idle : Status()
object Active : Status()
object GameOver : Status()
}
Run Code Online (Sandbox Code Playgroud)
IDE 建议我应该使用 adata object
而不是object
.
问题是我从来没有听说过data object
。我环顾四周,没有找到与 相关的可靠解释data object
。例如,这个2015 年的答案表明这是一个错误!
我正在寻找您的想法 data object
及其用法。
Fan*_*dez 17
我最终从Kotlin 文档中找到了一些有关数据对象的可靠信息
当您在普通对象之前添加时,data modifier
您只需向普通对象添加一些类似于数据类的功能。例如, atoString()
会自动为您生成,这样当您打印时,您将获得不带@addressdata object
的人类可读的类名称。
该文档确实建议data objects
在密封类中使用 a 与数据类一起使用。
数据对象声明对于密封层次结构(例如密封类或密封接口)特别有用,因为它们允许您与可能与对象一起定义的任何数据类保持对称性:
总之,添加data
修饰符可以增强普通对象的底层toString()
功能。equals()/hashCode() pair
然后,增强的对象将Data Classes
与密封类层次结构中的工作方式相匹配。
注意- 与数据类不同,数据对象不具有copy()
- 对象是具有一个实例的单例 -并且componentN()
- 对象没有属性且无法解构 - 函数
归档时间: |
|
查看次数: |
2530 次 |
最近记录: |