Закрытия Scala по сравнению с внутренними классами Java -> final VS var

Мы сначала задали этот вопрос об использованииfinal с анонимными внутренними классами в Java:Почему мы используем ключевое слово final с анонимными внутренними классами?

Я фактически читаю книгу Скалы Мартина Одерского. Кажется, Scala значительно упрощает Java-код, но для замыканий Scala я мог заметить существенную разницу.

Пока на Java мыимитировать» замыкания с анонимным внутренним классом, захватив конечную переменную (которая будет скопирована для хранения в куче, а не в стеке), кажется, в Scala мы можем создать замыкание, которое может захватывать val, но также и var, и, таким образом, обновлять это в закрытии вызова!

Так что мы можем использовать анонимный внутренний класс Java безfinal ключевое слово! Я'мы не закончили читать книгу, но пока я нене могу найти достаточно информации об этом выборе языка дизайна.

Может кто-нибудь сказать мне, почему Мартин Одерски, который, кажется, действительно заботится о функции?s побочные эффекты, выберите замыкания, чтобы иметь возможность захватить обаval а такжеvar, а не только?val

Каковы преимущества и недостатки реализаций Java и Scala?

Спасибо

Связанный вопрос:В случае закрытий Scala когда захваченные переменные начинают жить в куче JVM?

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

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