今天有人在群里问kotlin支持SAM的问题,其实kotlin不支持SAM,因为人家支持FP(function programing)
package react
interface Test {
fun print()
}
class TestInterface(var test: Test) {
fun start() {
test.print()
}
}
class TestInterfaceFp(var test: () -> Unit) {
fun start() {
test()
}
}
fun main(args: Array<String>) {
//调用Java时典型的SAM
Thread {
println("test runnable")
}.start()
//如果用接口的方式,就会写成这样丑陋
TestInterface(object : Test {
override fun print() {
println("test runnable")
}
}).start()
//正确写法
TestInterfaceFp {
println("test Closure")
}.start()
}