我正在尝试在Kotlin中创建函数引用,我的理解是我应该能够在编译时访问生成的KFunctionN
接口(interface),但是我收到KFunction1<T, R>
的“未解决的引用”编译错误。
例如:
inline fun <reified T : Any, reified R : Any> passFn(someFn: KFunction1<T, R>) {
//consume someFn
}
我对 Kotlin 的反射(reflection)是正常的,并且工作良好。有什么想法我想念的吗?
我正在使用Kotlin 1.3.21和IntelliJ 2018.3。
最佳答案
这看起来像一个IDE问题,我输入了import kotlin.reflect.KFunction1
导入,编译器错误消失了。
但是,如果您添加一个返回KFunction1
类型并明确声明该类型的表达式/语句,则Intellij会正确导入它。例如;
"\\s+".toRegex()::matches
可以提取为
val kFunction1: KFunction1<@ParameterName(name = "input") CharSequence, Boolean> = "\\s+".toRegex()::matches