oop - 将静态方法作为参数传递给 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")
}
}
}
我知道,由于它是静态的,我们可以简单地直接调用该方法,而不必将其作为参数传递,但是,在某些情况下(例如利用预先存在的代码),这将是有用的.
解决方案
要访问类的伴随对象,请使用${className}.Companion
. 所以...
foo("hit", OtherClass.Companion::buz)
.
推荐阅读
- javascript - 笑话:函数中的模拟类方法
- mule - 错误传播/转换消息组件不会覆盖 Mule4 的默认行为
- python - 如何防止除以零异常?
- java - 如果我们在使用 JAXB 时有未初始化的最终字段,如何引入无参数构造函数?
- android - 在 Flutter App 上构建失败“task assembleDebug failed with exit code 1”
- c++ - 如何从向量中获取最小值和最大值
2D图像的集合opencv c ++ - assembly - 如何使用 PIN 获取“lea”指令的操作数?
- spring-boot - 当我发布时,即使我声明了@RequestMapping,它也会显示在 Spring Boot 中找不到 404 错误
- c++ - 为什么即使没有错误,我的 UDP 连接也不会发送消息?
- python - 高效查询存储为 pickle 文件的两个大字典