在Kotlin中正常增量的工作方式与在Java中一样:
idCounter++
但是,如果idCounter是外部类的变量,那么如何应用增量运算符?
idCounter@OuterClass++
没有工作,也没有
idCounter++@OuterClass
我也弄弄了括号的各种变化,但没有成功。
答案 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 ++
}
}
}