2017-06-03 39 views
0

在Kotlin文件中,我嘗試過載等於方法的BigDecimal類。我有以下的代碼爲:過載等於Kotlin中的BigDecimal

fun BigDecimal.equals(n: Any?): Boolean = n is Int && this.compareTo(BigDecimal(n)) == 0 

的問題是,這個功能沒有得到通過n.equals調用(1)其中ñ是類型爲BigDecimal。 什麼問題,我該如何解決?

+0

請注意,這不是'重寫',而是'遮蔽' – voddan

+0

感謝那個微小而重要的區別! – Patrick

回答

1

您不能覆蓋或具有擴展功能的類的影子函數。看到一個非常類似的問題here的答案。

+0

總而言之,這意味着使用擴展函數不能覆蓋_equals_運算符? – Patrick

+0

是的,這就是它的意思。 – zsmb13

4

the documentation

如果一個類的成員函數,以及擴展函數被定義,其具有相同的接收器類型,相同的名稱和適用於給定的參數,該構件總是獲勝。

+0

酷,它甚至編譯 – Tuby

+0

是的,但它顯示了一個提示,從不使用擴展功能。 – Patrick