谁能解释为什么发生以下错误(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]()
还有一个非常相似的错误。
试试这个:
java.util.Collections.binarySearch(res0, 0: Integer)
如您所见,它可以很好地编译。问题是0
有类型Int
,没有Integer
。因此,您必须以某种方式告诉scala您想要转换0
为Integer
值。
就目前而言,您的代码会触发编译器寻找binarySearch
以和ArrayList[Integer]
作为第一个参数,并以Int
作为第二个参数的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句