对象和数据对象之间有什么区别?

fre*_*low 3 singleton kotlin

前几天我注意到我有时候会把它放在s data前,object有时则不是:

object A

data object B
Run Code Online (Sandbox Code Playgroud)

objecta和a 之间有什么区别data object

Ale*_*lov 10

data对象声明允许的事实实际上是一个应该修复的错误(KT-6486).

data是使编译器生成的注释equals,hashCode,toString,copycomponentN功能.当应用于对象声明时,它没有多大意义,原因有两个:

  • 对象声明不能具有构造函数,并且所有这些函数都基于主构造函数中定义的属性工作.
  • 运行时只有一个对象的实例.

因此,不会componentN生成任何函数,copy也无法生成函数,并且生成的equals/ hashCode/ toString实现将等同于Any基于标识的默认函数.