2017-06-19 118 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

相关问题