编译错误? java.lang.ClassCastException:scala.collection.mutable.WrappedArray $ ofRef无法强制转换为java.lang.Integer

时间:2013-04-01 21:57:30

标签: scala classcastexception scala-2.10 autoboxing

抓住一个奇怪的运行时错误:

// 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的一个新bug,因为如果我更改为scalaVersion := "2.10.0",它运行没有问题。

任何解决方案的想法? (例如魔术编译器标志)

1 个答案:

答案 0 :(得分:0)

根据Jason Zaugg的说法,这是SI-7436,应该在Scala 2.10.3中修复。