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”抛出一个执行失败。
知道为什么,或者如何修复它吗?@LucasPkotlin reflect
包含许多方法,可能会将APK方法计数推到64K限制以上。您可以通过启用、改为使用(如果适用)或忽略警告来修复此问题。在版本1.3中,此问题似乎已修复。解决方案是什么?