kotlin - KClass::memberExtensionFunctions 始终为空
问题描述
代码
import kotlin.reflect.full.*
class FooBar(val bar: String)
fun FooBar.baz(): Unit {println(this.bar)}
fun main(args: Array<String>) {
FooBar::class.declaredMemberExtensionFunctions.forEach {
println(it)
}
FooBar::class.memberExtensionFunctions.forEach {
println(it)
}
}
输出为空
解决方案
这是因为 declareMemberExtensionFunctions 仅返回在类中声明的扩展函数(如docs所示),而 FooBar.baz() 是顶级声明(因此未在 FooBar.baz 中声明)。
class FooBar(val bar: String) {
fun FooBar.baz(): Unit {
println(this.bar)
}
}
虽然我想这不是您想要的,但像这样构建扩展函数会使您的主要方法输出行。
推荐阅读
- javascript - 比较无序显示的json文件和下拉值
- deployment - Python3.9:如何在特定目标上部署 python 应用程序
- colors - scale_fill_manual 用更多变量扩展图例
- php - 在 refreshUser() 失败后 Symfony 重定向到注销路由
- spring - Spring STOMP 配置相互认证 wss/ssl
- batch-file - 如何在文本文件中包含特定单词的行之前和之后插入一行?
- azure-sql-database - Azure 机器人 + WhatsApp 集成
- reactjs - 如何获取单击的跨度元素的电子邮件 ID,该元素在 css 中是隐藏属性
- excel - 使用 VBA 的调试模式时 SAP 崩溃
- javascript - vscode webview - 将大量 json 数据从 webview 传递到外部 js