首页 > 解决方案 > 将静态方法作为参数传递给 Kotlin 中的另一个方法

问题描述

根据这个问题,一个函数可以作为参数传递给另一个函数,如下所示

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")
        }
    }
}

我知道,由于它是静态的,我们可以简单地直接调用该方法,而不必将其作为参数传递,但是,在某些情况下(例如利用预先存在的代码),这将是有用的.

标签: oopkotlin

解决方案


要访问类的伴随对象,请使用${className}.Companion. 所以...

foo("hit", OtherClass.Companion::buz).


推荐阅读