如何读取和增加外部类实例的Int变量?

时间:2019-07-05 17:29:13

标签: kotlin

在Kotlin中正常增量的工作方式与在Java中一样:

idCounter++

但是,如果idCounter是外部类的变量,那么如何应用增量运算符?

idCounter@OuterClass++

没有工作,也没有

idCounter++@OuterClass

我也弄弄了括号的各种变化,但没有成功。

1 个答案:

答案 0 :(得分:2)

您可能忘记为内部类使用inner class关键字。与Java不同,默认情况下,在另一个类的主体内声明的类为static class。这就是为什么您无法访问变量的原因。

如果您确实使用过inner class,并且需要使用外部类的idCounter,因为您在内部类中对其进行了阴影处理,则应该可以使用this@OuterClass.idCounter来访问它:

class OuterClass{
    var idCounter = 0
    var notShadowed = 0

    inner class InnerClass{
        var idCounter = 0

        fun foo(){
            idCounter++                  // modifying counter of InnerClass
            this@OuterClass.idCounter++  // modifying counter of OuterClass
            notShadowed ++
        }
    }
}