对 KFunctionN 的未解析引用

jim*_*rra 3 intellij-idea kotlin

我正在尝试在 Kotlin 中创建函数引用,我的理解是我应该能够KFunctionN在编译时访问生成的接口,但我收到了KFunction1<T, R>.

例如:

inline fun <reified T : Any, reified R : Any> passFn(someFn: KFunction1<T, R>) {
    //consume someFn
}
Run Code Online (Sandbox Code Playgroud)

我在类路径上有 kotlin-reflect 并且工作正常。我缺少什么想法吗?

我正在使用 Kotlin 1.3.21 和 IntelliJ 2018.3。

Lak*_*gha 5

这看起来像是 IDE 问题,我输入了 import import kotlin.reflect.KFunction1,编译器错误消失了。

但是,如果您添加返回类型的表达式/语句KFunction1并显式声明该类型,则 Intellij 会正确导入它。例如;

"\\s+".toRegex()::matches
Run Code Online (Sandbox Code Playgroud)

可以提取为

val kFunction1: KFunction1<@ParameterName(name = "input") CharSequence, Boolean> = "\\s+".toRegex()::matches
Run Code Online (Sandbox Code Playgroud)