Scala与Java的融合及Futures并发编程
1. Scala与Java的融合
在Scala中使用Java的流操作时,可能会遇到类型不匹配的问题。例如:
scala> stream.map(f).toArray
<console>:16: error: type mismatch;
found
: Int => Int
required: java.util.function.IntUnaryOperator
stream.map(f).toArray
ˆ
要解决这个问题,有两种方法:
1. 使用函数字面量显式调用 :
scala> stream.map(i => f(i)).toArray
res5: Array[Int] = Array(2, 3, 4)
- 在定义函数时进行类型注解 :
scala> val f: IntUnaryOperator = i => i + 1
f: java.util.function.IntUnaryOperator = ...
scala> val stream = Arrays.stream(Array(1, 2, 3))
stream: java.util.stream.IntS