Kotlin反射不可用

Kotlin反射不可用,kotlin,higher-order-functions,Kotlin,Higher Order Functions,我试图从第一个例子中学习高阶函数。这是我的代码和输出 代码 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

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

代码

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) }))
}
fun小写(value:String)=value.toLowerCase()
有趣的高级顺序(值:String,op:(String)->String):String{
println(“执行高阶趣味$op”)
返回op(值)
}
趣味主线(args:Array){
println(高位(“HELLO”,::小写))
println(高级顺序(“hello”,{it->小写(it)}))
println(高位(“HeLlo”,{x->小写(x)}))
println(高位(“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
执行高阶fun函数小写(Kotlin反射不可用)
你好
执行高阶fun函数1
你好
执行高阶fun函数1
你好
执行高阶fun函数1
你好
进程已完成,退出代码为0

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

除了
Kotlin stdlib
之外,全反射还需要
Kotlin反射
库。
如果全反射可用,它可能会有一个更全面的
toString()
,这就是消息。

是的。就这样。添加
compile“org.jetbrains.kotlin:kotlin reflect:$kotlin_version”
到build.gradle修复了这个问题。添加reflect库修复了我的构建中的问题(很好!),但不允许我构建APK。编译器为任务“app:transformDexArchiveWithExternalLibsDexMergerForDebug”抛出一个
执行失败。
知道为什么,或者如何修复它吗?@LucasP
kotlin reflect
包含许多方法,可能会将APK方法计数推到64K限制以上。您可以通过启用、改为使用(如果适用)或忽略警告来修复此问题。在版本1.3中,此问题似乎已修复。解决方案是什么?