如何称呼外类'来自Kotlin内部阶级的超级方法?

时间:2017-07-28 12:41:02

标签: kotlin

Kotlin相当于Java的OuterClass.super.method()

示例(在Java中):

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

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

3 个答案:

答案 0 :(得分:16)

使用super@OuterClass.method()语法:

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
        }
    }
}

这与Java OuterClass.this expressed in Kotlin as this@OuterClass的方式类似。

答案 1 :(得分:1)

根据 inner classes 上的这一节,您可以简单地调用外部方法:

class Outer {

    inner class Inner {
        fun foo() { 
            bar() 
        }
    }

    private fun bar() {}
}

答案 2 :(得分:0)

这与Kotlin相同:

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

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