Kotlin的指称和结构平等

Kotlin的 指称平等和结构平等有什么区别?

val a = File("/myfile.txt") val b = File("/myfile.txt") val sameRef = a === b 

和:

  val a = File("/myfile.txt") val b = File("/myfile.txt") val both= a == b 

  • 引用平等 === (也称为identity意味着两个对象的指针是相同的。 也就是说,这些对象被包含在同一个内存位置,这导致我们指向同一个对象的指针。

    身份:确定两个对象是否共享相同的内存地址

  • 结构平等 ==反过来就意味着两个对象具有相同的内容。 您应该通过重写equals()方法来指定何时应该将两个对象视为相等。

    相等:确定两个对象是否包含相同的状态。

Java一样 ,在Kotlin中没有默认生成的特定的equals()hashCode() (不考虑数据类 )。 因此,直到你为你的类覆盖这些方法, =====执行标识比较。