参照平等和结构平等有什么区别 在科特林?
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
引用
相等
===
(也称为标识)表示两个对象的指针相同。也就是说,对象包含在相同的内存位置中,这导致我们得出指针引用同一对象的事实。标识:确定两个对象是否共享相同的内存地址
结构相等
==
反过来意味着两个对象具有等价的内容。您应该通过重写 equals() 方法来指定何时应将两个对象视为相等。相等:确定两个对象是否包含相同的状态。
与Java一样,在Kotlin中没有特定的equals()
,默认情况下会生成hashCode()
(不考虑数据类)。因此,在为类重写这些方法之前,==
和===
都执行标识比较。