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が必要です:配列[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 に答える