1

当使用 val 声明构造函数参数时,以下代码将失败

作品:

class Poso(array : Array[_ <: Any])
object Test {
  new Poso(classOf[Retention].getEnumConstants())
}

不起作用:

class Poso(val array : Array[_ <: Any])
object Test {
  new Poso(classOf[Retention].getEnumConstants())
}

编译器给出错误:

Scala 编译器中的错误:类型不匹配;找到:java.lang.Object 需要:array[java.lang.Object]

无法给出行号。

4

1 回答 1

1

看起来像 Scala 编译器中的一个错误(它死于异常)。您可能应该将其报告给 Scala 开发人员。

使用AnyRef而不是Any为我修复它:

class Poso(val array : Array[_ <: AnyRef])
object Test {
  new Poso(classOf[java.lang.annotation.Retention].getEnumConstants())
}
于 2012-08-12T13:16:30.650 回答