2017-06-15 142 views
0
結構相等

之間有什麼參考平等和科特林結構平等 區別?參考和科特林

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 
+0

使用谷歌搜索你的問題給出了這個:https://kotlinlang.org/docs/reference/equality.html – Todd

+0

我以前閱讀過文檔,但我無法很好地理解參考和結構相等的確切含義是什麼 –

回答

4
  • 參考平等===(也稱爲身份意味着對於兩個對象指針是相同的。也就是說,對象包含在同一個內存位置,這導致我們指向指向同一對象的指針。

    同一性:確定兩個對象是否共享相同的存儲器地址

  • 結構平等==在其又意味着兩個對象具有相同的內容。您應該通過重寫equals()方法來指定何時應該將兩個對象視爲相同。

    平等:確定如果兩個對象包含相同的狀態。

還有在的Java,在科特林有是在默認情況下不會產生具體equals()hashCode()(不考慮data classes)。因此,除非您爲班級覆蓋了這些方法,否則=====都會執行身份比較。