Возможно, вы забыли использовать ключевое слово 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 ++
}
}
}