Kotlin имеет функцию, называемую SAM (метод Single Abstract) , которая позволяет вам указать lambda
, где ожидается интерфейс SAM
, а язык позаботится о создании реализация для вас. Это имеет смысл, потому что в этих интерфейсах есть только один method
(ie. 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)
}
}
}