我在 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(使用前将#替换为@)