Scala 2.8正确处理Boolean和java.lang.Boolean?

Jus*_*s12 8 scala scala-2.8

考虑以下:

scala> val a:java.lang.Boolean = true
a: java.lang.Boolean = true

scala> val b = true
b: Boolean = true

scala> a == b
res4: Boolean = true

scala> b == a
<console>:8: warning: comparing values of types Boolean 
and java.lang.Boolean using `==' will always yield false
       b == a
         ^
res5: Boolean = true
Run Code Online (Sandbox Code Playgroud)

警告说它会屈服false但会产生收益true.

Scala 2.8.

huy*_*hjl 3

一些源代码控制考古表明,2.8.1 之后这些警告的处理得到了改进。以下是对这些警告的单元测试的带注释的修订。

https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/neg/checksensible.scala?annotate=blame&rev=25638

这与 2.8.1 Final 中的 rev 19169 相比要基本得多:

https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_1_final/test/files/neg/checksensible.scala

我认为这给人一种在 2.8.1 之后对此给予更多关注的感觉。

查看一些错误报告,似乎警告确实如此 - 希望有助于识别错误。如果您知道自己在做什么(例如比较 java Boolean 和 scala Boolean),那么您可以忽略。