具有扩展功能
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
如果我在两个“ override”函数中直接使用doSomething()
,将导致无限递归。如何引用原始的fun <T> T.doSomething() where T: A, T: B
(如super.doSomething()
)?
答案 0 :(得分:0)
有点难看,但是
$total = (isset($_POST['total']))?$_POST['total']:'';
没有fun <T> T.doSomething() where T: A, T: B = ...
// calls the first version of doSomething
fun <T> T.doSomethingHelper() where T: A, T: B = this.doSomething()
@JvmName("doSomethingElse")
fun <T> T.doSomething() where T: A, T: B, T: C = ... // use doSomethingHelper() here
我得到
java.lang.ClassFormatError:类文件Simplest_versionKt中的方法名称和签名重复