gpt4 book ai didi

multithreading - 在为 Runnable 提供 lambda 时,为什么我不必重写 run 方法?

转载 作者:行者123 更新时间:2023-12-02 13:43:18 25 4
gpt4 key购买 nike

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接口(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com