当前位置: 首页 > 知识库问答 >
问题:

将静态方法作为参数传递给静态编程语言中的另一个方法

苍轶
2023-03-14

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

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

我知道,由于它是静态的,我们可以直接调用该方法,而不必将其作为参数传递,然而,在某些情况下(例如利用现有代码时),这仍然是有用的。

共有1个答案

盛柏
2023-03-14

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

foo(“命中”,其他类。同伴::buz)

 类似资料:
  • 我有一个用例,其中一个类存在于一个包的两个版本中。 到目前为止还不错(我相信)。 然后我有一个使用该类的应用程序,为了避免为不同的包版本重写应用程序,我想传递应该使用的类(即感兴趣的包)作为应用程序的参数。所以像这样的东西 我相信我可以把这个叫做如果我在构造函数中传递的实例,那么我会通过实例对象调用静态方法,不是吗? 另一方面,在上面的示例中,是一个类对象,因此我不能像上面那样调用静态方法。 这是

  • 如何将注释实例传递给函数? 我想调用java方法

  • 我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler

  • 我在Kotlin中有以下功能 我想以某种方式更改它,以便我可以作为第三个参数传递所需的运算符并评估表达式。类似的东西 在这种情况下,如何将运算符作为函数传递?我检查了同样的问题,但不清楚如何使用操作员。

  • 考虑以下代码,我们获取列表的块,加入它们并打印到标准输出: 代码工作正常。我想更改lambda调用(

  • 是否可以在中的class中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。 我已经尝试在一个名为的文件中执行以下操作: 但<code>数学。无法解析同伴。。。