我正在尝试通过 Scala 公开 Java 方法(来自 Kafka:https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html)。
这是原始的Java方法:
public void commitAsync(OffsetCommitCallback callback)
如何将 callback
传递给 Scala 中的方法?我有类似的东西:
def commitAsync() = {
consumer.commitAsync(OffsetCommitCallback callback)
}
谢谢。
奖励积分 - 看起来像是对它的测试,例如使用 MockitoSugar?
最佳答案
你可以这样处理回调:
def commitAsync() = {
consumer.commitAsync(new OffsetCommitCallback() {
def onComplete(m: java.util.Map[TopicPartition, OffsetAndMetadata], e: Exception) {
//...
}
})
}
OffsetCommitCallback是一个接口(interface),(“类似于”Scala 中的trait),因此您可以匿名初始化一个实例。
Here's是 Spark 项目中的一个快速出现。
关于java - Scala - 如何将回调传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050914/