Kotlin的参考和结构平等

时间:2017-06-15 18:31:10

标签: 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

1 个答案:

答案 0 :(得分:5)

  • 参照平等 === (也称为标识表示两个对象的指针相同。也就是说,对象包含在相同的内存位置,这导致我们指向指向同一对象的事实。

      

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

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

      

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

Java 一样,在 Kotlin 中,默认情况下没有生成特定的equals()hashCode()(不考虑{{3 }})。因此,在您为类重写这些方法之前,=====都会执行身份比较。