map*_*008 23 lambda android interface kotlin
我想传递一个接口作为参数,如下所示:
class Test {
fun main() {
test({})
// how can I pass here?
}
fun test(handler: Handler) {
// do something
}
interface Handler {
fun onCompleted()
}
}
Run Code Online (Sandbox Code Playgroud)
在Java中,我可以使用匿名函数test(new Handler() { .......... })
,但我不能在Kotlin中执行此操作.有人知道怎么做吗?
Tom*_*ura 60
在Kotlin你可以做到:
test(object: Handler {
override fun onComplete() {
}
})
Run Code Online (Sandbox Code Playgroud)
或者以同样的方式创建一个属性:
val handler = object: Handler {
override fun onComplete() {
}
}
Run Code Online (Sandbox Code Playgroud)
而且,代码中的某个地方:test(handler)
小智 5
因为你的界面只有一种功能。你可以像这样将其转换为 SAM
fun interface Handler {
fun onCompleted()
}
Run Code Online (Sandbox Code Playgroud)
那么你可以使用 lambda 来实现这个接口,从而减少总体编写的代码。这仅在 v1.4 中可行
归档时间: |
|
查看次数: |
9378 次 |
最近记录: |