val obj = Runnable {
for (i in 1..3)
{
println("$i")
Thread.sleep(500)
}
}
val r1 = Thread(obj)
r1.start()
最佳答案
Kotlin 有一个称为 SAM(Single Abstract method) Conversion 的功能。 ,它允许您指定 lambda
在哪里 SAM
接口(interface)是预期的,语言负责为您创建实现。这是有道理的,因为只有一个 method
在这些接口(interface)中(即 Runnable),那么为什么要编写所有样板代码,为什么不提供 SAM
的实现?作为 lambda
.
所以在你的例子中,即使你没有 override
run
method
,您提供的代码为 lambda
实际上是 run
方法的实现。在其完整的形式中,它看起来像这样
val obj = object: Runnable{
override fun run() {
for (i in 1..3)
{
println("$i")
Thread.sleep(500)
}
}
}
关于multithreading - 在为 Runnable 提供 lambda 时,为什么我不必重写 run 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61408458/