在Kotlin中沟通父类及其内部类的最佳方法是什么?

Dan*_*arc 0 java class kotlin

在Java中,如果我有一个类,并且在其中有另一个子类,则子类可以访问其父类方法,但是例如,这在kotlin中给出了错误

class A {
    static int methodSum(int a, int b) {
        return a+b;
    }

    static final class Try {
        void tryPrint() {
            System.Out.println(methodSum(2,3).toString())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是同样,我无法在Kotlin中实现它给我带来的错误。什么是实现这一目标的最佳方法。

svo*_*oid 5

请参阅Kotlin文档中的嵌套类和内部类。当您使用“内部类”时,该类将始终持有对外部类对象的引用。

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun getOuter() = this@Outer
        fun foo() = bar
    }
}

val outerObj = Outer().Inner().getOuter()
val bar = Outer().Inner().foo()
Run Code Online (Sandbox Code Playgroud)

  • 澄清一下:与 Java 一样,Kotlin 提供内部类(具有对外部类实例的引用)和嵌套类(没有)。但它们的默认值有所不同:Java 假定有一个内部类,除非您使用“static”将其标记为嵌套;而 Kotlin 假定一个嵌套类,除非你用“inner”标记它。 (2认同)