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()
(不考虑数据类 )。 因此,直到你为你的类覆盖这些方法, ==
和===
执行标识比较。