Вар внутри закрытия.
lin код в выражении объекта может обращаться к переменным из области, в которой он находится, подобно следующему коду:
fun countClicks(window: JComponent) {
var clickCount = 0
var enterCount = 0
window.addMouseListener(object : MouseAdapter() {
override fun mouseClicked(e: MouseEvent) {
clickCount++
}
override fun mouseEntered(e: MouseEvent) {
enterCount++
}
})
}
Но почему? В Java это запрещено, потому что жизненный цикл объекта отличается от локальных переменных, поэтомуenterCount
или жеclickCount
может быть недействительным, когда вы пытаетесь получить доступ к объекту. Может кто-нибудь сказать мне, как это делает Kotlin?