我试图通过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?
答案 0 :(得分:3)
您可以像这样处理回调:
def commitAsync() = {
consumer.commitAsync(new OffsetCommitCallback() {
def onComplete(m: java.util.Map[TopicPartition, OffsetAndMetadata], e: Exception) {
//...
}
})
}
OffsetCommitCallback是界面,("类似"为特征在Scala中),因此您可以匿名初始化实例。
Here's是Spark项目中的一个快速实现。