【发布时间】:2018-07-03 13:27:23
【问题描述】:
是否可以根据绑定的类型参数重载扩展函数?例如:
abstract class BaseActivity : AppCompatActivity() {
fun <T : Drawable> Int.get(): T?
= ContextCompat.getDrawable(this@BaseActivity, this@get) as T?
fun <T : View> Int.get(): T
= findViewById(this)
}
示例用法:
R.id.webView.get<WebView>() // finds webView
R.drawable.image.get<Drawable>() // gets drawable from resources
(Android 代码与问题无关,这正是我所拥有的)
但它给了我错误:
Conflicting overloads: public fun <T : Drawable> Int.get(): T? defined in xxx.BaseActivity,
public final fun <T : View> Int.get(): T defined in xxx.BaseActivity
不应该吗?
【问题讨论】:
标签: generics kotlin overloading