为什么在kotlin中使用SAM?同时具有对功能的本地支持。
SAM约定在java8中用作不具有本机功能支持的解决方法。
来自kotlin doc#sam-conversions:
请注意,SAM转换仅适用于接口,不适用于抽象类,即使它们也只有一个抽象方法。
另外,请注意,此功能仅适用于Java互操作。由于Kotlin具有适当的功能类型,因此不需要将功能自动转换为Kotlin接口的实现,因此不受支持。
然后应直接声明一个函数。
fun setPositiveButton(resId: Int, listener: (DialogInterface, Int) -> Unit) { listener.invoke( //DialogInterface, Int )}然后可以使用
setPositiveButton(1, { _, _ -> doStuff() })在kotlin 1.4中,可以将SAM转换用于Kotlin类。
fun interface Listener { fun listen()}fun addListener(listener: Listener) = a.listen()fun main() { addListener { println("Hello!") }}


