Kotlin 反射不可用

Kotlin reflection is not available

我试图从这个 video 的第一个例子中学习高阶函数。这是我的代码和输出。

代码

fun lowercase(value: String) = value.toLowerCase()

fun higherOrder(value:String, op: (String) -> String) : String {
    println("Executing higher order fun $op")
    return op(value)
}

fun main(args: Array<String>) {
    println(higherOrder("HELLO", ::lowercase))
    println(higherOrder("hello", {it -> lowercase(it)}))
    println(higherOrder("HeLlo", { x -> lowercase(x) }))
    println(higherOrder("Hello", { lowercase(it) }))
}

输出

Executing higher order fun function lowercase (Kotlin reflection is not available)
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello
Executing higher order fun Function1<java.lang.String, java.lang.String>
hello

Process finished with exit code 0

所以我的问题是,为什么它打印 Kotlin 反射不可用

除了 kotlin-stdlib 之外,全反射还需要 kotlin-reflect 库。 如果全反射可用,它可能会有更全面的 toString(),因此消息。