【发布时间】:2019-01-11 23:36:20
【问题描述】:
Kotlin 允许您扩展泛型类的具体实例。例如,假设我有以下类Foo,具有扩展函数Foo<Int>.bar() 和Foo<String>.bar():
class Foo<T>(t: T) {
val a: String = "bar"
val b: Int = 111
}
fun Foo<Int>.bar() = a
fun Foo<String>.bar() = b
fun main(args: Array<String>) {
val stringBar: String = Foo(1).bar()
val intBar: Int = Foo("").bar()
}
是否可以在没有扩展函数的情况下实现此行为,如果可以,如何将扩展函数转换为成员?是否可以不重命名或更改类型签名?
【问题讨论】: