小编Oli*_*Wah的帖子

在 Kotlin 中对具有默认参数的函数使用 callBy 时出错

我尝试使用默认参数值调用函数,而不在 Kotlin 中添加参数。

例如:

class Test {
    fun callMeWithoutParams(value : Double = 0.5) = value * 0.5

    fun callIt(name: String) = this.javaClass.kotlin
            .members.first { it.name == name }
            .callBy(emptyMap())
}

fun main(args: Array<String>) {
   println(Test().callIt("callMeWithoutParams"))
}
Run Code Online (Sandbox Code Playgroud)

我有一个例外:

Exception in thread "main" java.lang.IllegalArgumentException: No argument provided for a required parameter: instance of fun 
 Test.callMeWithoutParams(kotlin.Double): kotlin.Double
     at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod(KCallableImpl.kt:139)
    at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:111)
    at Test.callIt(Main.kt:15)
    at MainKt.main(Main.kt:20)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,该参数不是必需的,而是可选的......

reflection kotlin kotlin-reflect

3
推荐指数
1
解决办法
1632
查看次数

标签 统计

kotlin ×1

kotlin-reflect ×1

reflection ×1