gpt4 book ai didi

reflection - kotlin - 将方法引用传递给函数

转载 作者:行者123 更新时间:2023-12-03 22:36:44 25 4
gpt4 key购买 nike

假设我有以下 Java 类:

public class A {
public Result method1(Object o) {...}
public Result method2(Object o) {...}
...
public Result methodN(Object o) {...}
}

然后,在我的 Kotlin 代码中:
fun myFunction(...) {
val a: A = ...
val parameter = ...
val result = a.method1(parameter) // what if i want methodX?
do more things with result
}

我希望能够选择在 myFunction 中调用哪个 methodX| .在 Java 中,我会通过 A::method7作为参数并调用它。在 Kotlin 中,它无法编译。我应该如何在 Kotlin 中解决它?

最佳答案

您还可以在 Kotlin 中传递方法引用(无需重锤即反射):

fun myFunction(method: A.(Any) -> Result) {
val a: A = ...
val parameter = ...
val result = a.method(parameter)
do more things with result
}

myFunction(A::method1)
myFunction {/* do something in the context of A */}

这声明 method作为 A 的一部分,这意味着你可以用普通的 object.method() 调用它符号。 It Just Works™ 与方法引用语法。

还有另一种形式使用相同的调用语法,但使 A更明确:
fun myFunction(method: (A, Any) -> Result) { ... }

myFunction(A::method1)
myFunction {a, param -> /* do something with the object and parameter */}

关于reflection - kotlin - 将方法引用传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48709655/

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