在 Kotlin 中重载对特定实例方法的引用

Overloading on reference to method of a particular instance in Kotlin

很清楚如何引用特定实例的方法:

例如

val f = a::getItem

但是如果 getItem 超载了怎么办?我似乎无法在上面找到任何 material。

假设 getItem 具有以下重载函数:

getItem (String) -> Item
getItem (String, Metrics) -> Item

如何 select 绑定实例可调用的任何特定函数?

上下文将决定选择哪个重载。在

的情况下
val f = a::getItem

上下文没有说明 a::getItem 应该是什么类型,所以如果 getItem 被重载,两个重载都适用,并且会有一个编译时错误告诉你确切的那。类似于:

Overload resolution ambiguity. All these functions match.

  • public fun getItem(name: String): Item defined in ...
  • public fun getItem(name: String, metrics: Metrics): Item defined in ...

如果你改为给它一些关于 f 类型的信息:

val f: (String) -> Item = a::getItem

然后它将选择正确的重载。