为 Runnable 提供 lambda 时,为什么我不必重写 运行 方法?
When providing a lambda for Runnable why I dont have to override run method?
enter image description here
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
接口,并且该语言负责为您创建实现。这是有道理的,因为这些接口(即 Runnable)中只有一个 method
,所以为什么要编写所有样板代码,为什么不直接提供 SAM
的实现作为 lambda
].
因此在您的示例中,即使您没有 override
run
method
,您作为 lambda
提供的代码实际上是 run
方法的实现.完整的形式看起来像这样
val obj = object: Runnable{
override fun run() {
for (i in 1..3)
{
println("$i")
Thread.sleep(500)
}
}
}
enter image description here
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
接口,并且该语言负责为您创建实现。这是有道理的,因为这些接口(即 Runnable)中只有一个 method
,所以为什么要编写所有样板代码,为什么不直接提供 SAM
的实现作为 lambda
].
因此在您的示例中,即使您没有 override
run
method
,您作为 lambda
提供的代码实际上是 run
方法的实现.完整的形式看起来像这样
val obj = object: Runnable{
override fun run() {
for (i in 1..3)
{
println("$i")
Thread.sleep(500)
}
}
}