Kotlin的identityEquals没有按预期工作

时间:2015-07-28 01:51:53

标签: kotlin

根据kotlin reference,此代码段应打印" true"

val a: Int = 10000
print(a identityEquals a)

但是当我尝试它(版本是0.12.1218)时,它会打印" false"。为什么呢?

2015/07/29更新

如果在[-128~127]中输入a,则打印" true"。正如安德烈所说,应该使用===

2 个答案:

答案 0 :(得分:5)

我从安德烈·布雷斯拉夫那里找到了explain

  

原因是在引擎盖下Int不是引用类型:它由原始int表示,但是当你调用identityEquals时,谁的签名是Any?.identityEquals(Any?),它们的两个操作数都被装箱了,结果我们有两个不同的对象。我们将通过为Java原语引入identityEquals的重载来解决这个问题。

到目前为止,它还没有修复。官方参考应该解释这一点。它困扰了我几个小时。

答案 1 :(得分:3)

blueColor很快就会被弃用,请使用identityEquals