以下是来自Java的Kotlin重写的方法:
std::vector
但是,当我按如下方式调用它时:
end
我收到错误fun publishMessageSource(
name: String,
address: String,
completionHandler: Handler<AsyncResult<Unit>>
) {
val record = MessageSource.createRecord(name, address)
publish(record, completionHandler)
}
。
我做错了什么?
答案 0 :(得分:3)
您的lambda应该采用Handler
接口的单个方法所采用的参数,在这种情况下为AsyncResult<Unit>
。您的lambda Handler
,因此它不会将Handler
作为参数。
我认为你还需要在这里显式调用SAM构造函数,因为你的函数是用Kotlin编写的,看起来像这样:
publishMessageSource("market-data", ADDRESS, Handler<AsyncResult<Unit>> { record: AsyncResult<Unit> ->
...
})
这将创建一个Handler<AsyncResult<Unit>>
,其中lambda表示其单个方法。
最后,您可以省略lambda中的类型,以减少冗余:
publishMessageSource("market-data", ADDRESS, Handler<AsyncResult<Unit>> { record ->
...
})