Вар внутри закрытия.

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?

Ответы на вопрос(5)

Ваш ответ на вопрос