/ / Come chiamare il super metodo della classe esterna dalla classe interna in Kotlin? - Kotlin

Come chiamare il super metodo della classe esterna dalla classe interna in Kotlin? - Kotlin

Qual è l'equivalente di Kotlin di Java "s OuterClass.super.method()?

Esempio (in Java):

class Outer {
class Inner {
void someMethod() {
Outer.super.someOtherMethod();
}
}

@Override
public String someOtherMethod() {
// This is not called...
}
}

risposte:

10 per risposta № 1

Usa il super@OuterClass.method() sintassi:

open class C {
open fun f() { println("C.f()") }
}

class D : C() {
override fun f() { println("D.f()") }

inner class X {
fun g() {
super@D.f() // <- here
}
}
}

Questo è simile a come Java OuterClass.this è espresso in Kotlin come this@OuterClass.


0 per risposta № 2

Questo sarebbe l'equivalente in Kotlin:

internal class Outer {
internal inner class Inner {
fun myMethod() {
println(super@Outer.toString())
}
}

override fun toString(): String {
return "Blah"
}
}