为一个奇怪的运行时错误挠头:
// File: build.sbt
scalaVersion := "2.10.1"
// File: src/main/scala/bug/Bug.scala
package bug
class Foo(val args: Any*)
case class Bar(id: Int) extends Foo(id)
object Bug extends App {
val msg = Bar(666)
val id = msg.id // boom!
}
如果我用sbt run
“
[error] (run-main) java.lang.ClassCastException:
scala.collection.mutable.WrappedArray$ofRef cannot be cast to java.lang.Integer
java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be
cast to java.lang.Integer
at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source)
at bug.Bar.id(Test.scala:4)
at bug.Bug$delayedInit$body.apply(Test.scala:8)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
...
这是什么鬼?这似乎是 Scala 2.10.1 的一个新错误,因为如果我更改为scalaVersion := "2.10.0"
,它运行没有问题。
有什么变通的想法吗?(例如魔术编译器标志)