根据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)
。