kotlin1.3之前不支持用kotlin定义的接口使用lambda表达式,SAM转换只对Java生效,在1.4后支持Kotlin的SAM转换,interface前要加上fun关键字表示可以进行SAM转换。
SAM 转换 : Single Abstract Method Conversions,对于只有单个非默认抽象方法接口的转换,在kotlin中可以直接用lambda来表示。
fun interface R {
fun run()
}
fun post(r: R) = r.run()
fun main(args: Array<String>) {
post(object : R {
override fun run() {
println("hello")
}
})
post {
println("world")
}
}