根据this question,可以将一个函数作为参数传递给另一个函数,如下所示

fun foo(m: String, bar: (m: String) -> Unit) {
    bar(m)
}

fun buz(m: String) {
    println("another message: $m")
}

fun something() {
    foo("hi", ::buz)
}
同样,我们也可以从类中传递方法
class OtherClass {
    fun buz(m: String) {
        println("another message: $m")
    }
}

foo("hi", OtherClass()::buz)
但是,如果我们要传递的方法是静态的(在同伴对象内)怎么办?
class OtherClass {
    companion object {
        fun buz(m: String) {
            println("another message: $m")
        }
    }
}
我知道,由于它是静态的,因此我们可以直接调用该方法,而不必诉诸于将其作为参数传递,但是,在某些情况下(例如,利用预先存在的代码),这将是有用的。

最佳答案

要访问类的伴侣对象,请使用${className}.Companion。所以...
foo("hit", OtherClass.Companion::buz)

10-07 16:32