【发布时间】:2019-01-24 16:58:59
【问题描述】:
具有扩展功能
fun <T> T.doSomething() where T: A, T: B
如果只有一个泛型绑定A,我可以使用语法(A::doSomething)(instanceOfA) 来引用该函数,但是如何使用多个绑定呢?
例子:
interface A、interface B,以及与两个接口fun <T> T.doSomething() where T: A, T: B绑定的扩展函数。
现在我设法“覆盖”doSomething,如果一个类扩展了额外的interface C,比如class X: A, B, C:
- 声明另一个扩展函数
fun <T> T.doSomething() where T: A, T: B, T: C - 在类内声明
doSomething()X
如果我在两个“覆盖”函数中直接使用doSomething() 会导致无限递归。如何引用原版fun <T> T.doSomething() where T: A, T: B(如super.doSomething())?
【问题讨论】:
-
请给出一个清晰的例子来说明你想要达到的目标。 A 和 B 从哪里来?
标签: generics kotlin kotlin-extension