gpt4 book ai didi

java - 使用函数作为参数类型使用 getDeclaredMethod

转载 作者:搜寻专家 更新时间:2023-11-01 02:57:18 25 4
gpt4 key购买 nike

我有一个私有(private)方法,标题是:

private fun setNumericListener(editText: EditText, onValueChanged:(newValue: Double?) -> Unit)

我这样调用这个方法:setNumericListener(amountEditText, this::onAmountChanged)

我想使用类中的 getDeclaredMethod https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getDeclaredMethod(java.lang.String,%20java.lang.Class...)获取对我的私有(private)方法的引用 setNumericListener . getDeclaredMethod接收参数类型数组 Class<?>... parameterTypes但是当我的私有(private)方法将方法引用作为参数时,我不知道如何设置参数类型数组。

谢谢

最佳答案

函数引用解析为 kotlin.jvm.functions.Function1 类型.

这意味着您可以使用 getDeclaredMethod()通过调用获取方法引用:

getDeclaredMethod("setNumericListener", EditText::class.java, Function1::class.java)

这是一个完整的片段:

fun main(vararg args: String) {
val method = Test::class.java.getDeclaredMethod("setNumericListener",
EditText::class.java, Function1::class.java)

println(method)
}

// Declarations
class Test {
private fun setNumericListener(editText: EditText,
onValueChanged: (d: Double?) -> Unit) {}
}

class EditText {}

打印:

private final void Test.setNumericListener(EditText,kotlin.jvm.functions.Function1)

关于java - 使用函数作为参数类型使用 getDeclaredMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52252395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com