Scala - 如何将回调传递给方法

Joe*_*Joe 1 java scala apache-kafka

我正在尝试通过 Scala 公开 Java 方法(来自 Kafka:https : //kafka.apache.org/10/javadoc/index.html? org/apache/kafka/clients/consumer/ KafkaConsumer.html)。
这是原始的 Java 方法:

public void commitAsync(OffsetCommitCallback callback)
Run Code Online (Sandbox Code Playgroud)

如何传递callback给Scala中的方法?我有类似的东西:

 def commitAsync() = {
    consumer.commitAsync(OffsetCommitCallback callback)
  }
Run Code Online (Sandbox Code Playgroud)

谢谢。
加分点 - 例如使用 MockitoSugar 的测试看起来如何?

Mik*_*378 5

您可以像这样处理回调:

def commitAsync() = {
   consumer.commitAsync(new OffsetCommitCallback() {
      def onComplete(m: java.util.Map[TopicPartition, OffsetAndMetadata], e: Exception) {
        //...
      }
   })
}
Run Code Online (Sandbox Code Playgroud)

OffsetCommitCallback是一个接口(“类似于” Scala 中的特征),因此您可以匿名初始化一个实例。

是 Spark 项目中的一个快速幻影。