Cierres de Scala en comparación con las clases internas de Java -> final VS var

Primero he hecho esta pregunta sobre el uso definal Con clases internas anónimas en Java:¿Por qué usamos la palabra clave final con clases internas anónimas?

En realidad estoy leyendo el libro de Scala de Martin Odersky. Parece que Scala simplifica una gran cantidad de código Java, pero para los cierres de Scala podría notar una diferencia significativa.

Mientras que en Java "simulamos" cierres con una clase interna anónima, capturando una variable final (que se copiará para vivir en el montón en lugar de la pila), parece que en Scala podemos crear un cierre que puede capturar un valor, pero También una var, y así actualizarlo en la llamada de cierre!

Así que es como si pudiéramos usar una clase interna anónima de Java sin elfinal ¡palabra clave! No he terminado de leer el libro, pero por ahora no encontré suficiente información sobre esta opción de diseño de idioma.

Alguien puede decirme por qué Martin Odersky, quien realmente parece cuidar los efectos secundarios de la función, elige los cierres para poder capturar ambosval yvar, en lugar de soloval?

¿Cuáles son los beneficios e inconvenientes de las implementaciones de Java y Scala?

Gracias

Pregunta relacionada:Con los cierres de Scala, ¿cuándo comienzan a vivir las variables capturadas en el montón de JVM?

Respuestas a la pregunta(2)

Su respuesta a la pregunta