是否可以从 Java 中使用 Kotlin 反射?
我想KCallable
从 Java 中的 Kotlin 函数中获取并使用它的方法callBy
来调用具有默认参数的方法。
Kotlin 中的示例:
fun test(a: String = "default", b: String): String {
return "A: $a - B: $b";
}
fun main() {
val callable: KCallable<*> = ::test
val parameterB = callable.parameters[1]
val result = callable.callBy(mapOf(
parameterB to "test"
))
println(result)
}
甚至可能吗?如果是这样,如何KCallable
从 Java 代码中获取实例?
编辑:
我不能@JvmOverloads
按照建议使用,因为参数的数量、默认参数及其位置可以是任意的。
已知的调用信息是:
- 参数名称
- 他们的类型
- 他们的价值
编辑2:
不在这里工作的例子@JvmOverloads
:
fun test(a: String = "default", b: String = "default"): String {
return "A: $a - B: $b";
}
String
这里用一个值调用是模棱两可的。