Roc*_* Li 1 reflection function kotlin
很清楚如何引用特定实例的方法:Reference to method of a certain instance in Kotlin
例如
val f = a::getItem
Run Code Online (Sandbox Code Playgroud)
但是如果getItem超载了怎么办?我似乎找不到任何相关材料。
假设getItem具有以下重载函数:
getItem (String) -> Item
getItem (String, Metrics) -> Item
Run Code Online (Sandbox Code Playgroud)
如何通过绑定实例可调用来选择任何特定函数?
上下文将决定选择哪个重载。如果是
val f = a::getItem
Run Code Online (Sandbox Code Playgroud)
上下文没有说明类型a::getItem应该是什么,因此如果getItem重载,则两个重载都适用,并且会出现编译时错误准确地告诉您这一点。就像是:
过载分辨率模糊。所有这些功能都匹配。
public fun getItem(name: String): Item定义于...public fun getItem(name: String, metrics: Metrics): Item定义于...
如果您给它一些有关类型的信息f:
val f: (String) -> Item = a::getItem
Run Code Online (Sandbox Code Playgroud)
然后它会选择正确的过载。
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |