我想像这样传递一个接口作为参数:

class Test {
    fun main() {
        test({})
        // how can I pass here?
    }

    fun test(handler: Handler) {
        // do something
    }

    interface Handler {
        fun onCompleted()
    }
}

在Java中,我可以使用像test(new Handler() { .......... })这样的匿名函数,但在Kotlin中我不能这样做.有人知道怎么做吗?

推荐答案

在Kotlin ,你可以做:

test(object: Handler {
    override fun onComplete() {

    }
})

或者以同样的方式建造一处房产:

val handler = object: Handler {
    override fun onComplete() {

    }
}

并且,在代码中的某个位置: 测试(处理程序)

Kotlin相关问答推荐

Kotlin-删除按钮周围的空格

Kotlin 海峡没有结束

Kotlin多平台(KMP)保存到文件不能在iOS上保存

Scala与Kotlin中的迭代

为什么在jacksonObjectMapper上将DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES设置为false无效?

Kotlin Path.useLines { } - 如何不获取 IOException("Stream closed")?

如何规避 Kotlin 的泛型类型差异约束

每个 Kotlin 版本的默认 Kotlin 语言版本是什么?

为什么多线程不会使执行更快

顶级属性的初始化

Kotlin 编译器在构造函数中报告未使用的表达式,以便构建器采用 vararg lambda

如何在 Compose 中创建可重用的修饰符?

内联函数导致单元测试代码覆盖率报告出错

未为任务启用 Gradle 构建缓存

Swift vs Kotlin 在排序数组上的表现

为什么 Dialog 没有 NavController [Missing]?

Failure delivering result on activity result

将协程更新到 1.2.0 后构建失败:META-INF/atomicfu.kotlin_module

Kotlin中默认导入哪些包/函数?

Kotlin 中的填充字符串