Scala:使用ArrayList的错误类型不匹配错误

戴夫·L

谁能解释为什么发生以下错误(Scala 2.10.3)?

scala> new java.util.ArrayList[Integer]()
res0: java.util.ArrayList[Integer] = []

scala> res0.add(0)
res1: Boolean = true

scala> java.util.Collections.binarySearch(res0, 0)
<console>:9: error: type mismatch;
 found   : java.util.ArrayList[Integer]
 required: java.util.List[_ <: Comparable[_ >: Any]]
              java.util.Collections.binarySearch(res0, 0)
                                                 ^

以下工作正常:

scala> java.util.Collections.binarySearch[Integer](res0, 0)
res4: Int = 0

直到我更加明确地指出该错误类型,编译器才会抱怨特定类型,然后它会接受它,这似乎很奇怪

编辑:

另请注意,如果将第一步更改为:

scala> new java.util.ArrayList[Int]()

还有一个非常相似的错误。

里吉斯让吉尔(Regis Jean-Gilles)

试试这个:

java.util.Collections.binarySearch(res0, 0: Integer)

如您所见,它可以很好地编译。问题是0有类型Int,没有Integer因此,您必须以某种方式告诉scala您想要转换0Integer值。

就目前而言,您的代码会触发编译器寻找binarySearch以和ArrayList[Integer]作为第一个参数,并以Int作为第二个参数的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章