我在 Scala 2.11 中遇到以下错误:
Error:(54, 85) type mismatch;
found : org.apache.pig.data.Tuple => Unit
required: java.util.function.Consumer[_ >: org.apache.pig.data.Tuple]
pigTest.getAlias("productData").forEachRemaining((x: org.apache.pig.data.Tuple) => print(x))
我很困惑,因为我的函数是一个消费者,所以我不知道为什么它被拒绝或如何修复它。
最佳答案
Scala 2.11 与 Java 8 函数的互操作性不佳。我正在调用的 Pig 代码是需要 Java 使用者的 Java 代码,因此根据 this post我必须包装 Scala 函数。
结果代码:
pigTest.getAlias("productData").forEachRemaining(toJavaConsumer((x: org.apache.pig.data.Tuple) => print(x)))
哪里:
def toJavaConsumer[T](consumer: (T) => Unit): Consumer[T] ={
new Consumer[T] {
override def accept(t: T): Unit = {
consumer(t)
}
}
}
关于java - 发现类型不匹配 : scala function => Unit required: java. util.Consumer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883930/