java - 发现类型不匹配 : scala function => Unit required: java. util.Consumer

标签 java scala

我在 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/

相关文章:

java - Spark - 将 scala 转换为 java

scala - SBT 无法解决 jersey-container-grizzly2-http 2.5.1 的依赖关系

java - 构建正则表达式 : replacing a number of '?' with an integer equal to the number of '?' s?

Java 和 SQL 比较日期

java - 创建名称为 'entityManagerFactoryBean' 的 bean 时出错

list - 在 Scala 中将一个列表拆分为两个列表

java.lang.NoClassDefFoundError : Could not initialize class

sql - 如何选择每个组的第一行?

java - j2me中有没有可用的API可以让我们检测金属?

java - 将一些东西保存到 JAR 中