我有两种方法:
class Example {
fun method(name: String): String {}
fun method(name: String, length: Int): String {}
}
在我的代码中的某个时刻,我需要使用第二个版本的method
via 反射,如下所示:
val func = Example::method
这无法编译,因为编译器无法区分此重载方法的两个定义之间的区别。我找不到指定函数参数的方法。文档说:
或者,您可以通过将方法引用存储在具有明确指定类型的变量中来提供必要的上下文:
val predicate: (String) -> Boolean = ::isOdd // refers to isOdd(x: String)
但在我的例子中,分配给的函数func
可以是任意的,它不一定有两个类型的参数String
和Int
,在其他情况下,分配给这个属性的函数只有一个String
参数。但在这种情况下,我需要带有两个参数的版本。
那么,有什么方法可以指定我正在使用哪个函数,如果没有,是否有任何解决方法?