La bandera de variable local definida en un ámbito adjunto debe ser final o efectivamente final
Local Variable Flag Defined An Enclosing Scope Must Be Final
Java8 usa variables locales en expresiones lambda para solicitar: La marca de variable local definida en un ámbito adjunto debe ser final o efectivamente final
Esto se debe a que las variables locales que usa se asignan a esta variable después de la inicialización. Luego de la asignación, se considerará que la variable no es definitiva, por lo que se reporta el error. Hay varias soluciones a este problema.
Ley uno:
|_+_|
La variable local que desea usar se asigna a una nueva variable antes de su uso, por lo que java8 pensará que la nueva variable es final, no hay cambios, puede usarla.
Ley 2:
|_+_|Coloque los valores que necesita en una matriz y utilícelos.
También se puede poner en el mapa o en la lista.