2017-06-19 186 views
3

執行以下代碼:爲什麼==和equals會產生不同的結果?

inline fun <reified R> foobar() { 
    println(R::class == Double::class) 
    println(R::class.equals(Double::class)) 
} 

fun main(args: Array<String>) { 
    foobar<Double>() 
} 

產生以下輸出:

false 
true 

爲什麼會有==之間的差異,在這種情況下等於? IntelliJ本身建議我用==替換equals調用。另外,我可以使用==在過去工作中發佈此代碼。

使用科特林版本1.1.0-rc91

+0

可能是代碼生成的具體類型參數的類標記的相關問題:https://youtrack.jetbrains.com/issue/KT-17879 – hotkey

+0

請檢查是否有更新版本的Kotlin有此行爲。 – hotkey

+0

謝謝 - 是的,它看起來像是一個已知的錯誤:https://youtrack.jetbrains.com/issue/KT-17748發佈作爲答案,我會接受它。 – hudsonb

回答

3

此行爲是在代碼生成具體化類型參數的類令牌一個已知的問題,都能在這裏找到追蹤:KT-17748

相關問題