kotlin 内部クラスから外側クラスのメンバ参照


クラスのネスト記述

class OuterClass {
    var foo = ""
    class InnerClass {}
}
内部クラスから外部クラスのメンバを参照

InnserClassからOuterClassの var Foo を参照するには、内部innerクラスとして宣言する

class OuterClass {
    var foo = ""
    inner class InnerClass {
        fun setFoo(){ foo = "..." }
    }
}

また、var Foo は外部クラスでprivate宣言されていても参照可能

class OuterClass {
    private var foo = ""
    inner class InnerClass {
        fun setFoo(){ foo = "..." }
    }
}

同様にlateinitのメンバにもアクセス可能。

class OuterClass {
    private lateinit var  foo : String
    inner class InnerClass {
        fun setFoo(){ foo = "..." }
    }
    constructor(){
        InnserClass().setFoo()
    }
}

この場合、外部クラスメンバfooは遅延初期化される。